मैं एमवीसी के संस्करण का उपयोग कर रहा हूं जो विजुअल स्टूडियो 2012 एक्सप्रेस के साथ भेज दिया गया है। (माइक्रोसॉफ्ट.एस्पनेट.एमवीसी.4.0.20710.0)एक फ़ाइल अपलोड करें एमवीसी 4 वेब एपीआई .NET 4
मुझे लगता है कि यह आरटीएम संस्करण है। continueWith जहां t.IsFaulted == true
में
public Task<HttpResponseMessage> PostFormData()
{
// Check if the request contains multipart/form-data.
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
// Read the form data and return an async task.
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith<HttpResponseMessage>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
}
// This illustrates how to get the file names.
foreach (MultipartFileData file in provider.FileData)
{
Trace.WriteLine(file.Headers.ContentDisposition.FileName);
Trace.WriteLine("Server file path: " + file.LocalFileName);
}
return Request.CreateResponse(HttpStatusCode.OK);
});
return task;
}
लेकिन इस कोड हमेशा समाप्त होता है:
मैं जो सभी इस कोड का उपयोग ऑनलाइन उदाहरण के बहुत सारे मिल गया है। अपवाद पढ़ता है:
एमआईएमई मल्टीपार्ट स्ट्रीम का अप्रत्याशित अंत। MIME मल्टीपार्ट संदेश पूर्ण नहीं है।
यहां मेरा ग्राहक प्रपत्र है। कुछ भी नहीं, मैं AJAX अपलोड के लिए jquery फॉर्म प्लगिंग करना चाहता हूं, लेकिन मैं काम करने के लिए भी इस तरह से नहीं मिल सकता।
<form name="uploadForm" method="post" enctype="multipart/form-data" action="api/upload" >
<input type="file" />
<input type="submit" value="Upload" />
</form>
मैं पढ़ा है कि यह पार्सर उम्मीद प्रत्येक संदेश के अंत में/सीआर/वामो के कारण होता है, और है कि बग जून में तय किया गया है।
जो मुझे पता नहीं लगा सकता है, अगर यह वास्तव में तय किया गया था, तो इसमें एमवीसी 4 का यह संस्करण क्यों शामिल नहीं है? इंटरनेट पर इतने सारे उदाहरण क्यों हैं कि यह कोड काम करता है जब यह एमवीसी 4 के इस संस्करण में नहीं होता है?
एएसपी.नेट वेब एपीआई एएसपी.नेट एमवीसी का हिस्सा नहीं है और इसका अपना NuGet पैकेज -> [एएसपी.नेट वेब एपीआई 4.0.20710.0] (http://nuget.org/packages/aspnetwebapi) है। कृपया जांचें कि आप किस संस्करण का उपयोग कर रहे हैं। – tpeczek