/// <summary> /// 开始处理任务 /// </summary> /// <returns></returns> public async Task StartJob(JsonFile jsonFile, string tempFilePath) { if (jsonFile.Values.Count > 0) { StorageOperation storage = new StorageOperation(); TempStorageOperation tempStorage = new TempStorageOperation(); Queue <JsonFileValues> queues = new Queue <JsonFileValues>(); for (int i = 0; i < jsonFile.Values.Count; i++) { queues.Enqueue(jsonFile.Values[i]); } jsonFile.Values.Clear(); if (queues.Count > 0) { JsonFileValues job = null; while (queues.TryDequeue(out job)) { //预览图处理 if (job.Key == "Medium") { jsonFile.Values.Add(new Jobs.ToMediumJob().Run(tempFilePath, job)); } //缩略图处理 if (job.Key == "Small") { jsonFile.Values.Add(new Jobs.CreateSmallJob().Run(tempFilePath, job)); } } } //保存Json文件 await jsonFile.SaveAs(tempStorage.GetJsonFilePath(jsonFile.Id)); } }
/// <summary> /// 处理图片 /// </summary> /// <param name="imageInput"></param> /// <returns></returns> public async Task <ImageOutput> Processing(ImageInput imageInput, HttpRequest request) { TempStorageOperation tempStorage = new TempStorageOperation(); //IStorageService _StorageService = new LocalStorageService(); //输出结果对象 ImageOutput imageOutput = new ImageOutput(); imageOutput.Id = Guid.NewGuid().ToString(); imageOutput.Name = imageInput.Name; imageOutput.Tags = imageInput.Tags; imageOutput.Length = imageInput.File.Length; imageOutput.Type = imageInput.File.ContentType; imageOutput.FileName = imageOutput.Id + "." + imageInput.File.ContentType.Split("/")[1]; imageOutput.Url = Core.StorageOperation.GetUrl(imageOutput.FileName); imageOutput.Path = Core.StorageOperation.GetPath(); //写入临时文件夹 var tempFilePath = await tempStorage.Write(imageInput.File, imageOutput.Id); foreach (Core.Interface.IStorageService item in _StorageService) { await item.CopyDirectory(tempStorage.GetTempPath(imageOutput.Id), Core.StorageOperation.GetSavePath(), true); } //复制目录 //保存Json文件 JsonFile jsonFile = new JsonFile(); jsonFile.Id = imageOutput.Id; jsonFile.CreateTime = DateTime.Now; jsonFile.Name = imageOutput.Name; jsonFile.Tags = imageOutput.Tags; jsonFile.Url = imageOutput.Url; jsonFile.FileName = imageOutput.FileName; //创建处理作业 var task = new List <JsonFileValues>(); //预览图 task.Add(new JsonFileValues() { Key = "Medium", Status = "0", Value = "" }); //缩略图 task.Add(new JsonFileValues() { Key = "Small", Status = "0", Value = "" }); jsonFile.Values = task; await jsonFile.SaveAs(tempStorage.GetJsonFilePath(jsonFile.Id)); //开始处理任务 await StartJob(jsonFile, tempFilePath); //复制目录 foreach (Core.Interface.IStorageService item in _StorageService) { await item.CopyDirectory(tempStorage.GetTempPath(jsonFile.Id), Core.StorageOperation.GetSavePath(), true); } //删除临时目录 await tempStorage.Delete(jsonFile.Id); //返回结果 return(imageOutput); }