private static FileInfo GetTempUploadFilePath(string materialID, string rootPathName, string originalFileName) { string fileName = MaterialUploadModel.GetRelativeFilePath(materialID, Path.GetExtension(originalFileName)); string uploadRootPath = GetUploadRootPath(rootPathName); AutoCreateUploadPath(uploadRootPath); fileName = Path.Combine(GetUploadRootPath(rootPathName), "Temp", fileName); return(new FileInfo(fileName)); }
public static MaterialModelCollection ProcessMaterialUpload(this HttpRequestMessage request) { MaterialModelCollection materials = new MaterialModelCollection(); request.Content.IsMimeMultipartContent("form-data").FalseThrow("上传请求的格式不正确"); InMemoryMultipartFormDataStreamProvider provider = InMemoryMultipartFormDataStreamProvider.GetProvider(request); string mumJson = provider.FormData.GetValue("materialUploadModel", string.Empty); MaterialUploadModel uploadModel = null; if (mumJson.IsNotEmpty()) { JsonSerializerSettings settings = new JsonSerializerSettings(); settings.ContractResolver = new CamelCasePropertyNamesContractResolver(); uploadModel = JsonConvert.DeserializeObject <MaterialUploadModel>(mumJson); } else { uploadModel = new MaterialUploadModel(); } foreach (StreamContent fileContent in provider.Files) { if (uploadModel.OriginalName.IsNullOrEmpty()) { ContentDispositionHeaderValue contentDisposition = fileContent.Headers.ContentDisposition; if (contentDisposition != null) { string fileName = contentDisposition.FileName.Replace("\"", string.Empty); uploadModel.OriginalName = Path.GetFileName(fileName); } } MaterialModel material = uploadModel.GenerateMaterial(); IMaterialContentPersistManager persistManager = GetMaterialContentPersistManager(material.ID, GetTempUploadFilePath(material.ID, uploadModel.RootPathName, uploadModel.OriginalName)); persistManager.SaveTempMaterialContent(material.ID, fileContent.ReadAsStreamAsync().Result); materials.Add(material); } return(materials); }