में पुट क्रिया का उपयोग कर फ़ाइल अपलोड करें मैं फ़ाइलों को अपलोड करने के लिए HTTP PUT क्रिया का उपयोग करके एक एएसपी.Net वेब एपीआई 2 क्रिया का खुलासा करना चाहता हूं। यह हमारे आरईएसटी मॉडल के साथ सुसंगत है क्योंकि एपीआई एक रिमोट फाइल सिस्टम (वेबडावी के समान है, लेकिन वास्तव में सरलीकृत) का प्रतिनिधित्व करता है, इसलिए ग्राहक संसाधन नाम चुनता है (इस प्रकार PUT आदर्श है और POST एक तार्किक विकल्प नहीं है)।एएसपी.Net वेब एपीआई 2
वेब एपीआई दस्तावेज how to upload files using multipart/form-data forms का वर्णन करता है, लेकिन यह वर्णन नहीं करता कि PUT विधियों का उपयोग करके इसे कैसे किया जाए।
आप इस तरह के एपीआई (एचटीएमएल मल्टीपार्ट फॉर्म पुट क्रियाओं की अनुमति नहीं देते) का परीक्षण करने के लिए क्या उपयोग करेंगे? सर्वर कार्यान्वयन the web api documentation में वर्णित (MultipartStreamProvider
का प्रयोग करके) बहुखण्डीय कार्यान्वयन की तरह लग रहे हैं, या यह इस तरह दिखना चाहिए:
[HttpPut]
public async Task<HttpResponseMessage> PutFile(string resourcePath)
{
Stream fileContent = await this.Request.Content.ReadAsStreamAsync();
bool isNew = await this._storageManager.UploadFile(resourcePath, fileContent);
if (isNew)
{
return this.Request.CreateResponse(HttpStatusCode.Created);
}
else
{
return this.Request.CreateResponse(HttpStatusCode.OK);
}
}
यह होगा:
एक साधारण सांत्वना अनुप्रयोग (वेब एपीआई क्लाइंट लाइब्रेरी का उपयोग करके) यह परीक्षण करने के लिए पर्याप्त है: यहाँ एक उदाहरण, किसी भी प्रमाणीकरण/प्राधिकरण/त्रुटि हैंडलिंग कोड से बाहर छीन लिया है एक HTTP सर्वर चलाने पर भरोसा करने के बजाय, इसके लिए एक उचित इकाई परीक्षण कैसे लिखना दिलचस्प है। – James
मुझे यह काम करने में बहुत परेशानी थी क्योंकि मुझे 404 त्रुटियां मिल रही थीं। बाहर निकलता है आपको '{filename}' {file}} के फ़ाइल नामों को स्वीकार करने के लिए web.config को बदलने की आवश्यकता हो सकती है। {Extension} '। विवरण के लिए यह स्टैक ओवरफ्लो प्रश्न देखें: http://stackoverflow.com/questions/20998816/dot-character-in-mvc-web-api-2-for-request-such-as-api-people-staff-45287 –