/// <summary>
        /// 用户上传照片
        /// </summary>
        /// <param name="accountID">账户ID</param>
        /// <param name="file"></param>
        /// <returns></returns>
        internal async Task <string> SaveOneFile(ObjectId accountID, IFormFile file)
        {
            string resultFileId = "";

            long size = 0;

            var filename = ContentDispositionHeaderValue
                           .Parse(file.ContentDisposition)
                           .FileName
                           .Trim('"');
            string saveDir   = $@"{ConstantProperty.BaseDir}{ConstantProperty.AlbumDir}";
            string dbSaveDir = $@"{ConstantProperty.AlbumDir}";

            if (!Directory.Exists(saveDir))
            {
                Directory.CreateDirectory(saveDir);
            }
            string exString = filename.Substring(filename.LastIndexOf("."));
            string saveName = Guid.NewGuid().ToString("N");

            filename = $@"{saveDir}{saveName}{exString}";

            size += file.Length;
            FileModel <string[]> fileCard = new FileModel <string[]>();

            using (FileStream fs = System.IO.File.Create(filename))
            {
                file.CopyTo(fs);
                fs.Flush();
                string[] fileUrls = new string[] { $@"{dbSaveDir}{saveName}{exString}" };
            }
            var accountCollection = mongo.GetMongoCollection <AccountModel>();
            var account           = accountCollection.Find(x => x.AccountID.Equals(accountID)).FirstOrDefault();

            if (account.UploadImages == null)
            {
                accountCollection.UpdateOne(x => x.AccountID.Equals(accountID), Builders <AccountModel> .Update.Set(x => x.UploadImages, new List <FileModel <string[]> >()));
            }

            //ThreadPool.QueueUserWorkItem(new WaitCallback(ImageTool.Create3Img), params3Img);
            return(await Task.Run(() => {
                ParamsCreate3Img params3Img = new ParamsCreate3Img()
                {
                    FileName = filename, FileDir = ConstantProperty.AlbumDir
                };
                params3Img.OnFinish += fileModel =>
                {
                    fileModel.FileID = ObjectId.GenerateNewId();
                    accountCollection.UpdateOne(x => x.AccountID.Equals(accountID),
                                                Builders <AccountModel> .Update.Push(x => x.UploadImages, fileModel));
                    //mongo.GetMongoCollection<FileModel<string[]>>("FileModel").InsertOne(fileModel);
                    resultFileId = fileModel.FileID.ToString();
                };
                ImageTool.Create3Img(params3Img);
                return resultFileId;
            }));
        }
Beispiel #2
0
        /// <summary>
        /// 上传单张图片
        /// </summary>
        /// <returns></returns>
        public string UploadImage(string openId)
        {
            long   size         = 0;
            var    files        = Request.Form.Files;
            string resultFileId = null;
            BaseResponseModel <string> responseModel = new BaseResponseModel <string>();

            try
            {
                foreach (var file in files)
                {
                    var filename = ContentDispositionHeaderValue
                                   .Parse(file.ContentDisposition)
                                   .FileName
                                   .Trim('"');
                    string saveDir   = $@"{ConstantProperty.BaseDir}{ConstantProperty.AlbumDir}";
                    string dbSaveDir = $@"{ConstantProperty.AlbumDir}";
                    if (!Directory.Exists(saveDir))
                    {
                        Directory.CreateDirectory(saveDir);
                    }
                    string exString = filename.Substring(filename.LastIndexOf("."));
                    string saveName = Guid.NewGuid().ToString("N");
                    filename = $@"{saveDir}{saveName}{exString}";

                    size += file.Length;
                    FileModel <string[]> fileCard = new FileModel <string[]>();
                    using (FileStream fs = System.IO.File.Create(filename))
                    {
                        file.CopyTo(fs);
                        fs.Flush();
                        string[] fileUrls = new string[] { $@"{dbSaveDir}{saveName}{exString}" };
                    }
                    ParamsCreate3Img params3Img = new ParamsCreate3Img()
                    {
                        FileName = filename, FileDir = ConstantProperty.AlbumDir
                    };
                    params3Img.OnFinish += fileModel => {
                        new MongoDBTool().GetMongoCollection <FileModel <string[]> >("FileModel").InsertOne(fileModel);
                        resultFileId = fileModel.FileID.ToString();
                    };
                    //ThreadPool.QueueUserWorkItem(new WaitCallback(ImageTool.Create3Img), params3Img);
                    new Thread(new ParameterizedThreadStart(ImageTool.Create3Img)).Start(params3Img);
                }
                responseModel.StatusCode = (int)ActionParams.code_ok;
            }
            catch (Exception)
            {
                responseModel.StatusCode = (int)ActionParams.code_error;
            }
            responseModel.JsonData = resultFileId;
            //return JsonConvert.SerializeObject(responseModel);
            return(resultFileId);
        }
 private async Task <long> SaveImages(List <IFormFile> sourceImages, List <FileModel <string[]> > container)
 {
     return(await Task.Run(() =>
     {
         long size = 0;
         foreach (var file in sourceImages)
         {
             var filename = ContentDispositionHeaderValue
                            .Parse(file.ContentDisposition)
                            .FileName
                            .Trim('"');
             string saveDir = $@"{ConstantProperty.BaseDir}{ConstantProperty.GoodsImagesDir}";
             if (!Directory.Exists(saveDir))
             {
                 Directory.CreateDirectory(saveDir);
             }
             filename = filename.Substring(filename.LastIndexOf("."));
             string saveName = ConstantProperty.GoodsImagesDir + ObjectId.GenerateNewId().ToString() + $@"{filename}";
             filename = ConstantProperty.BaseDir + saveName;
             size += file.Length;
             using (FileStream fs = System.IO.File.Create(filename))
             {
                 file.CopyTo(fs);
                 fs.Flush();
             }
             ParamsCreate3Img params3Img = new ParamsCreate3Img()
             {
                 FileName = filename, FileDir = ConstantProperty.GoodsImagesDir
             };
             params3Img.OnFinish += fileModel =>
             {
                 if (fileModel.FileID == ObjectId.Empty)
                 {
                     fileModel.FileID = ObjectId.GenerateNewId();
                 }
                 container.Add(fileModel);
             };
             //ThreadPool.QueueUserWorkItem(new WaitCallback(ImageTool.Create3Img), params3Img);
             //Thread thread = new Thread(new ParameterizedThreadStart(ImageTool.Create3Img));
             //thread.IsBackground = false;
             //thread.Start(params3Img);
             ImageTool.Create3Img(params3Img);
         }
         return size;
     }));
 }
 private async Task <long> SaveImage(IFormFile listImage)
 {
     return(await Task.Run(() =>
     {
         long size = 0;
         if (listImage != null)
         {
             var filename = ContentDispositionHeaderValue
                            .Parse(listImage.ContentDisposition)
                            .FileName
                            .Trim('"');
             string saveDir = $@"{ConstantProperty.BaseDir}{ConstantProperty.GoodsImagesDir}";
             if (!Directory.Exists(saveDir))
             {
                 Directory.CreateDirectory(saveDir);
             }
             filename = filename.Substring(filename.LastIndexOf("."));
             string saveName = ConstantProperty.GoodsImagesDir + ObjectId.GenerateNewId().ToString() + $@"{filename}";
             filename = ConstantProperty.BaseDir + saveName;
             size += listImage.Length;
             using (FileStream fs = System.IO.File.Create(filename))
             {
                 listImage.CopyTo(fs);
                 fs.Flush();
             }
             ParamsCreate3Img params3Img = new ParamsCreate3Img()
             {
                 FileName = filename, FileDir = ConstantProperty.GoodsImagesDir
             };
             params3Img.OnFinish += fileModel =>
             {
                 if (fileModel.FileID == ObjectId.Empty)
                 {
                     fileModel.FileID = ObjectId.GenerateNewId();
                 }
                 GoodsModel.GoodsListImage = fileModel;
             };
             ImageTool.Create3Img(params3Img);
         }
         return size;
     }));
 }
        internal async Task<string> SavePlanGoodsListPic(IFormFile file)
        {
            string resultFileId = "";

            long size = 0;

            var filename = ContentDispositionHeaderValue
                                  .Parse(file.ContentDisposition)
                                  .FileName
                                  .Trim('"');
            string saveDir = $@"{ConstantProperty.BaseDir}{ConstantProperty.GoodsImagesDir}";
            string dbSaveDir = $@"{ConstantProperty.GoodsImagesDir}";
            if (!Directory.Exists(saveDir))
            {
                Directory.CreateDirectory(saveDir);
            }
            string exString = filename.Substring(filename.LastIndexOf("."));
            string saveName = Guid.NewGuid().ToString("N");
            filename = $@"{saveDir}{saveName}{exString}";

            size += file.Length;
            FileModel<string[]> fileCard = new FileModel<string[]>();
            using (FileStream fs = System.IO.File.Create(filename))
            {
                file.CopyTo(fs);
                fs.Flush();
                string[] fileUrls = new string[] { $@"{dbSaveDir}{saveName}{exString}" };
            }
            return await Task.Run(() => {
                ParamsCreate3Img params3Img = new ParamsCreate3Img() { FileName = filename, FileDir = ConstantProperty.GoodsImagesDir };
                params3Img.OnFinish += fileModel =>
                {
                    mongo.GetMongoCollection<FileModel<string[]>>("FileModel").InsertOne(fileModel);
                    resultFileId = fileModel.FileID.ToString();
                };
                ImageTool.Create3Img(params3Img);
                return resultFileId;
            });
        }
        /// <summary>
        /// 保存商品图片
        /// </summary>
        /// <param name="goodsType"></param>
        /// <param name="picType"></param>
        /// <param name="files"></param>
        /// <param name="hostingEnvironment"></param>
        internal void SaveGoodsFiles(int goodsType, int picType, IFormFileCollection files, IHostingEnvironment hostingEnvironment)
        {
            long size = 0;
            foreach (var file in files)
            {
                var filename = ContentDispositionHeaderValue
                                .Parse(file.ContentDisposition)
                                .FileName
                                .Trim('"');
                string saveDir = $@"{ConstantProperty.BaseDir}{ConstantProperty.GoodsImagesDir}";
                string dbSaveDir = $@"{ConstantProperty.GoodsImagesDir}";
                if (!Directory.Exists(saveDir))
                {
                    Directory.CreateDirectory(saveDir);
                }
                string exString = filename.Substring(filename.LastIndexOf("."));
                string saveName = Guid.NewGuid().ToString("N");
                filename = $@"{saveDir}{saveName}{exString}";

                size += file.Length;
                FileModel<string[]> fileCard = new FileModel<string[]>();
                using (FileStream fs = System.IO.File.Create(filename))
                {
                    file.CopyTo(fs);
                    fs.Flush();
                    string[] fileUrls = new string[] { $@"{dbSaveDir}{saveName}{exString}" };
                }

                var goodsPicCollection = mongo.GetMongoCollection<GoodsPic>();
                var goodsPic = goodsPicCollection.Find(x => x.GoodsClass == (GoodsClass)goodsType).FirstOrDefault();
                if (goodsPic == null)
                {
                    goodsPic = new GoodsPic() { GoodsClass = (GoodsClass)goodsType };

                    goodsPicCollection.InsertOne(goodsPic);
                }
                if (goodsPic.HeaderPics == null)
                {
                    goodsPicCollection.UpdateOne(x => x.GoodsPicID.Equals(goodsPic.GoodsPicID),
                        Builders<GoodsPic>.Update.Set(x => x.HeaderPics, new List<FileModel<string[]>>()));
                }
                if (goodsPic.BodyPics == null)
                {
                    goodsPicCollection.UpdateOne(x => x.GoodsPicID.Equals(goodsPic.GoodsPicID),
                        Builders<GoodsPic>.Update.Set(x => x.BodyPics, new List<FileModel<string[]>>()));
                }
                ParamsCreate3Img params3Img = new ParamsCreate3Img() { FileName = filename, FileDir = ConstantProperty.GoodsImagesDir };
                params3Img.OnFinish += fileModel =>
                {
                    fileModel.FileID = ObjectId.GenerateNewId();
                    if (picType == 0)
                    {
                        var update = Builders<GoodsPic>.Update.Push(x => x.HeaderPics, fileModel);
                        goodsPicCollection.UpdateOne(x => x.GoodsPicID.Equals(goodsPic.GoodsPicID), update);
                    }
                    else
                    {
                        var update = Builders<GoodsPic>.Update.Push(x => x.BodyPics, fileModel);
                        goodsPicCollection.UpdateOne(x => x.GoodsPicID.Equals(goodsPic.GoodsPicID), update);
                    }
                    mongo.GetMongoCollection<FileModel<string[]>>("FileModel").InsertOne(fileModel);
                };
                //ThreadPool.QueueUserWorkItem(new WaitCallback(ImageTool.Create3Img), params3Img);
                new Thread(new ParameterizedThreadStart(ImageTool.Create3Img)).Start(params3Img);
            }
        }