Example #1
0
        /// <summary>
        /// 上传文件。
        /// </summary>
        /// <param name="account">上传账号</param>
        /// <param name="request">Http请求对象</param>
        /// <returns>上传后的文件地址</returns>
        public ResponseSet<string> Upload(string account, HttpRequestBase request)
        {
            var source = request.Params["Category"].AsInt32(1);

            var fileUpload = new FileUpload
            {
                Category = request.Params["BusinessCategory"],
                SerialNumber = request.Params["BusinessSerialNumber"]
            };

            var modifyUploadedFiles = request.Params[ModifyUploadedFilesFieldName]?.Split(',').ToList();
            var uploadedFilesDescription = request.Params[UploadFilesDescriptionFieldName]?.Split(',').ToList();

            for (var index = 0; index < request.Files.Count; index++)
            {
                var file = request.Files[index];

                fileUpload.Items.Add(new FileUploadItem
                {
                    Source = source,
                    FileName = file.FileName,
                    ContentType = file.ContentType,
                    Description = uploadedFilesDescription?[index],
                    FileData = file.InputStream.GetBase64String(),
                    BusinessFileId = modifyUploadedFiles?[index].AsGuid()
                });
            }

            return this.Upload(account, fileUpload);
        }
Example #2
0
        public async Task<ResponseSet<string>> Upload(string account, FileUpload fileUpload)
        {
            if (fileUpload == null || fileUpload.Items == null)
            {
                return new ResponseSet<string> { ErrorMessage = "无上传文件信息!" };
            }

            var user = GetUser(account);

            if (user == null)
            {
                return new ResponseSet<string> { ErrorMessage = UserNotExists };
            }

            var savedFiles = this.FileService.GetBusinessFiles(fileUpload.Category, fileUpload.SerialNumber);

            if (!savedFiles.IsSuccess)
            {
                return new ResponseSet<string> { ErrorMessage = savedFiles.ErrorMessage };
            }

            var removeFiles = from f in savedFiles.Datas
                              where
                                fileUpload.Items.IsEmpty() || fileUpload.Items.All(i => i.BusinessFileId != f.Id)
                              select f.File.SavedPath;

            if (!removeFiles.IsEmpty())
            {
                FileManager.Remove(removeFiles);
            }

            var businessFiles = fileUpload.AsBusinessFiles(user.Id);

            for (var i = 0; i < fileUpload.Items.Count; i++)
            {
                var file = businessFiles[i];
                var item = fileUpload.Items[i];

                if (!string.IsNullOrWhiteSpace(item.FileData))
                {
                    var filePath = this.GetSaveAsFileName(item.FileName);
                    var existsFilePath = this.FileService.CheckFileExists(file.File.MD5).Data;
                    
                    if (File.Exists(HttpContext.Current.Server.MapPath(existsFilePath)))
                    {
                        file.File.SavedPath = null;

                        continue;
                    }else if (!string.IsNullOrWhiteSpace(existsFilePath))
                    {
                        filePath = HttpContext.Current.Server.MapPath(existsFilePath);
                    }

                    var buffers = Convert.FromBase64String(item.FileData);
                    var fileInfo = new FileInfo(filePath);

                    using (var stream = fileInfo.OpenWrite())
                    {
                        await stream.WriteAsync(buffers, 0, buffers.Length);
                    }

                    file.File.Size = buffers.Length;
                    file.File.SavedPath = fileInfo.FullName.ConvertToWebSitePath();
                }
                else
                {
                    file.File.ContentType = null;
                }
            }

            var rsp = this.FileService.UploadFiles(fileUpload.Category, fileUpload.SerialNumber, businessFiles);

            if (!rsp.IsSuccess)
            {
                FileManager.Remove(businessFiles.Select(f => f.File.SavedPath));
            }

            return rsp;
        }
Example #3
0
 /// <summary>
 /// 上传文件(基于base64字符串)。
 /// </summary>
 /// <param name="account">上传账号</param>
 /// <param name="fileUpload">上传文件信息</param>
 /// <returns>上传后的文件地址</returns>
 public ResponseSet<string> Upload(string account, FileUpload fileUpload)
 {
     return this.Post<ResponseSet<string>>($"{FileUploadUrl}/{account}", fileUpload);
 }