示例#1
0
        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));
        }
示例#2
0
        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);
        }