/// <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); }
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; }
/// <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); }