public async Task <IEnumerable <FileSafeResult> > UploadMultipleFiles(HttpRequestMessage request) { // MultipartFormDataStreamProvider reads form data only after file processing // so we have to put files to the temporary folder firstly var tempFolder = PathProcessor.CreateFolder(Guid.NewGuid().ToString()); var uploadProvider = new MultipartFormDataStreamProviderSafe(tempFolder); await request.Content.ReadAsMultipartAsync(uploadProvider); // and now we can move files to the "idUpload" folder var idUpload = uploadProvider.FormData["idUpload"]; var idUploadFolder = PathProcessor.CreateFolder(idUpload); return(uploadProvider.FileData.Select(file => MoveFile(idUploadFolder, idUpload, file))); }
private async Task <IEnumerable <FileSafeResult> > Upload(HttpRequestMessage request, string folder) { var pathProcessor = new PathProcessor(folder); var uploadProvider = new MultipartFormDataStreamProviderSafe(pathProcessor.SourceFolder); await request.Content.ReadAsMultipartAsync(uploadProvider); var idUpload = uploadProvider.FormData["idUpload"]; return (from fileData in uploadProvider.FileData let localFileName = fileData.LocalFileName select new FileSafeResult(localFileName) { id = folder, FileName = Path.GetFileName(localFileName), idUpload = idUpload, }); }