2012-02-15 12 views
12

एक आरईएसटी क्लाइंट के लिए फ़ाइल अपलोड करने का बेहतर तरीका क्या है?REST फ़ाइल HttpRequestMessage या स्ट्रीम के साथ अपलोड करें?

WCF वेब API दस्तावेज़

[WebInvoke(UriTemplate = "thumbnail", Method = "POST")] 
public HttpResponseMessage UploadFile(HttpRequestMessage request) 
{ 

कई मंच पदों से से:
WCF REST File upload with additional parameters

[WebGet(UriTemplate="", Method ="POST"] 
public string UploadFile(Stream fileContents) 

मैं समझता हूं कि पहली विधि सीधे एक सामान्य HTML प्रपत्र से एक फ़ाइल पोस्ट करने के लिए अनुमति देता है । मुझे लगता है कि सभी मंच पदों पर दूसरा दृष्टिकोण अधिक आम लगता है।

आप क्या सलाह देंगे और क्यों? आरईएसटी एपीआई सभी प्रकार की भाषाओं और प्लेटफार्मों से सुलभ होना चाहिए।

HttpRequestMessage दृष्टिकोण के लिए, मैं डब्ल्यूसीएफ एचटीपी क्लाइंट के साथ एक फ़ाइल को बेहतर तरीके से अपलोड कैसे करूं? FormUrlEncodedMediaTypeFormatter के साथ)

उत्तर

2

पहली विधि "धातु के नजदीक" है और यह अधिक लचीला होगा क्योंकि आप http अनुरोधों को संसाधित करेंगे और प्रतिक्रियाओं को स्वयं बनायेंगे। यदि आपको केवल क्लाइंट से स्ट्रीम स्वीकार करना है, तो दूसरा विकल्प कार्यान्वयन दृष्टिकोण से बहुत आसान है (हुड के तहत, यह वही काम करता है जो पहली विधि कर रहा है)

मेरे पास नहीं है आपके अंतिम प्रश्न का उत्तर।

12

आदेश HttpRequestMessage दृष्टिकोण का परीक्षण करने में मैं निम्नलिखित MVC का उपयोग किया जाता है:

public class TestingController : Controller 
{ 

    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Upload() 
    { 
     var file = Request.Files[0]; 
     var filename = Request.Form["filename"]; 
     var uri = string.Format("http://yoururl/serviceRoute/{0}", filename); 
     var client = new HttpClient(); 
     client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("image/pjpeg")); 
     var content = new StreamContent(file.InputStream); 
     var response = client.PostAsync(uri, content); 
     ViewBag.ServerUri = uri; 
     ViewBag.StatusCode = response.Result.StatusCode.ToString(); 
     return View(); 
    } 

} 

सूचकांक दृश्य उस में एक रूप होना चाहिए कि पदों वापस अपलोड विधि करने के लिए। फिर आप अपनी आरईएसटी सेवा से कनेक्शन बनाने के लिए एचटीपी क्लाइंट का उपयोग करने में सक्षम हैं।

+0

धन्यवाद जेड, दुर्भाग्य से मैं केवल एक सही उत्तर चुन सकता हूं और मैंने इसे पहले ही जेकैफ़िन को दिया है। लेकिन एक अप-वोट किया। – Remy

+0

रेमी, आपका स्वागत है और कोई चिंता नहीं है। बस खुशी है कि यह आपकी मदद की। – Jed

संबंधित मुद्दे