W jaki sposób chciałbym użyć MultipartFormDataStreamProvider
i Request.Content.ReadAsMultipartAsync
w ApiController
?przy użyciu MultipartFormDataStreamProvider i ReadAsMultipartAsync
Mam googled kilka samouczków, ale nie mogę uzyskać żadnego z nich do pracy, im przy użyciu .net 4.5.
To, co obecnie otrzymała:
public class TestController : ApiController
{
const string StoragePath = @"T:\WebApiTest";
public async void Post()
{
if (Request.Content.IsMimeMultipartContent())
{
var streamProvider = new MultipartFormDataStreamProvider(Path.Combine(StoragePath, "Upload"));
await Request.Content.ReadAsMultipartAsync(streamProvider);
foreach (MultipartFileData fileData in streamProvider.FileData)
{
if (string.IsNullOrEmpty(fileData.Headers.ContentDisposition.FileName))
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
string fileName = fileData.Headers.ContentDisposition.FileName;
if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
{
fileName = fileName.Trim('"');
}
if (fileName.Contains(@"/") || fileName.Contains(@"\"))
{
fileName = Path.GetFileName(fileName);
}
File.Copy(fileData.LocalFileName, Path.Combine(StoragePath, fileName));
}
}
else
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
}
}
otrzymuję wyjątek
Nieoczekiwany koniec strumienia wieloczęściowej MIME. Komunikat wieloczęściowy MIME nie jest kompletny w postaci .
po uruchomieniu await task;
. Czy ktoś ma pojęcia, co robię źle lub mieć działający przykład w normalnym projekcie asp.net za pomocą api sieci web.
Jeśli 't.IsFaulted' ma wartość true, oznacza to, że był wyjątek i zostanie zapełniony we właściwości' Exception'. Zobacz, czym był wyjątek. Ewentualnie po prostu "czekaj na zadanie", aby uprościć kod, a między innymi ponownie wyświetli wyjątki. – Servy
po zastąpieniu ContinueWith i zdaniem if po "oczekuj zadania"; Otrzymuję "Nieoczekiwany koniec wieloczęściowego strumienia MIME. Komunikat wieloczęściowy MIME nie jest kompletny." – Peter
myślę następujące Post może pomóc http://stackoverflow.com/questions/17177237/webapi-ajax-formdata-upload-with-extra-parameters – user2880706