Esempio n. 1
0
        public IHttpActionResult UploadPhotos(Guid typeId)
        {
            var ids = HttpContext.Current.Request.Form["mediaIds"].Trim(',').Split(',');

            foreach (var mediaId in ids)
            {
                var fileName = DateTime.Now.ToString("yyyy-MM-dd");
                //文件保存的名字
                var fileSaveName = Guid.NewGuid().ToString("N") + ".png";
                //租户Id
                var dirName = TenantId.ToString();
                var path    = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                path = Path.Combine(path, fileSaveName);
                //从临时素材获取
                using (var stream = File.Create(path))
                {
                    //TODO:切换SDK
                    MediaApi.Get(WeChatConfigManager.Current.GetAccessToken(), mediaId, stream);
                }
                //上传到永久素材
                var result = MediaApi.UploadForeverMedia(AccessToken, path);
                if (!string.IsNullOrWhiteSpace(result.errmsg))
                {
                    return(BadRequest(result.errmsg));
                }
                //写入数据
                var pic = new Site_Image
                {
                    IsFrontCover = !db.Site_Images.Any(p => p.ResourcesTypeId == typeId),
                    MediaId      = result.media_id,
                    Name         = fileName,
                    //站内地址
                    SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                    Url             = result.url,
                    ResourcesTypeId = typeId
                };
                SetModel(pic, default(Guid));
                db.Site_Images.Add(pic);
                db.SaveChanges();
            }
            return(Ok());
        }
Esempio n. 2
0
        /// <summary>
        ///     上传站点资源
        /// </summary>
        /// <param name="resoureType"></param>
        /// <param name="file"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public static Site_FileBase Upload(Site_ResourceType resoureType, string fileName, byte[] fileStream,
                                           AppDbContext db, out AjaxResponse ajaxMessage)
        {
            ajaxMessage = new AjaxResponse {
                Success = true
            };
            var fileSaveName = Guid.NewGuid().ToString("N") + Path.GetExtension(fileName);
            var tenantId     = WeiChatApplicationContext.Current.TenantId;

            var dirName = tenantId.ToString();
            var path    = Path.Combine(HttpContext.Current.Server.MapPath("~/MediaFiles"), dirName);

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            path = Path.Combine(path, fileSaveName);
            File.WriteAllBytes(path, fileStream);
            UploadForeverMediaResult result = null;

            result = resoureType.ResourceType == SiteResourceTypes.Video
                ? MediaApi.UploadForeverVideo(WeChatConfigManager.Current.GetAccessToken(), path, fileName, "test")
                : MediaApi.UploadForeverMedia(WeChatConfigManager.Current.GetAccessToken(), path);
            if (!string.IsNullOrWhiteSpace(result.errmsg))
            {
                ajaxMessage.Success = false;
                ajaxMessage.Message = result.errmsg;
            }
            else
            {
                switch (resoureType.ResourceType)
                {
                case SiteResourceTypes.Gallery:
                {
                    var pic = new Site_Image
                    {
                        IsFrontCover    = false,
                        MediaId         = result.media_id,
                        Name            = fileName,
                        SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                        Url             = result.url,
                        ResourcesTypeId = resoureType.Id,
                        CreateBy        = HttpContext.Current.User.Identity.GetUserId(),
                        CreateTime      = DateTime.Now,
                        TenantId        = tenantId
                    };
                    db.Site_Images.Add(pic);
                    db.SaveChanges();
                    return(pic);
                }
                break;

                case SiteResourceTypes.Voice:
                {
                    var voice = new Site_Voice
                    {
                        MediaId         = result.media_id,
                        Name            = fileName,
                        SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                        Url             = result.url,
                        ResourcesTypeId = resoureType.Id,
                        CreateBy        = HttpContext.Current.User.Identity.GetUserId(),
                        CreateTime      = DateTime.Now,
                        TenantId        = tenantId
                    };
                    db.Site_Voices.Add(voice);
                    db.SaveChanges();
                    return(voice);
                }
                break;

                case SiteResourceTypes.Video:
                {
                    var video = new Site_Video
                    {
                        MediaId         = result.media_id,
                        Name            = fileName,
                        SiteUrl         = string.Format("/MediaFiles/{0}/{1}", dirName, fileSaveName),
                        Url             = result.url,
                        ResourcesTypeId = resoureType.Id,
                        CreateBy        = HttpContext.Current.User.Identity.GetUserId(),
                        CreateTime      = DateTime.Now,
                        TenantId        = tenantId
                    };
                    db.Site_Videos.Add(video);
                    db.SaveChanges();
                    return(video);
                }
                break;

                default:
                    ajaxMessage.Success = false;
                    ajaxMessage.Message = "不支持上传此类型";
                    break;
                }
            }
            return(null);
        }