c# - HttpRequest.Files is empty when posting file through HttpClient -
सर्वर साइड:
सार्वजनिक HttpResponseMessage पोस्ट ([FromUri] स्ट्रिंग machineName) {HttpResponseMessage परिणाम = नल; Var httpRequest = HttpContext.Current.Request; अगर (httpRequest.Files.Count & gt; 0 & amp; & amp; String.IsNullOrEmpty (machineName)!) ... क्लाइंट-साइड:
public static void PostFile (स्ट्रिंग यूआरएल, स्ट्रिंग filePath) {अगर (String.IsNullOrWhiteSpace (यूआरएल) || String.IsNullOrWhiteSpace (filepath)) फेंक नई ArgumentNullException (); अगर (! फ़ाइल। उदाहरण (फ़ाइलपाठ)) नई फाइलनोटफ़ाउंड अपवाद फेंकें (); का उपयोग करते हुए (वर हैंडलर = नए HttpClientHandler {साख = नए NetworkCredential (AppData.UserName, AppData.Password, AppCore.Domain)}) का उपयोग करते हुए (वर ग्राहक = नई HttpClient (हैंडलर)) का उपयोग कर (वर सामग्री = नए MultipartFormDataContent ()) का उपयोग कर ( Var ms = नया मेमोरीस्ट्रीम (फ़ाइल। रीडएल्बेट्स (फ़ाइलपैथ))) {var fileContent = नया स्ट्रीम कॉन्टेंट (एमएस); FileContent.Headers.ContentDisposition = नई ContentDispositionHeaderValue ("अनुलग्नक") {FileName = पथ। GetFileName (filePath)}; content.Add (fileContent); Content.Headers.ContentType = नया MediaTypeHeaderValue ("एप्लिकेशन / ओकटेट-स्ट्रीम"); Var परिणाम = client.PostAsync (url, सामग्री)। परिणाम; result.EnsureSuccessStatusCode (); }} सर्वर-साइड httpRequest.Files संग्रह पर हमेशा रिक्त है। लेकिन हेडर (सामग्री-लंबाई आदि ...) सही हैं।
आप उपयोग नहीं करना चाहिए HttpContext के लिए एएसपी.नेट वेब एपीआई में फाइलें प्राप्त करना माइक्रोसॉफ्ट द्वारा लिखित इस उदाहरण पर एक नज़र डालें। <पूर्व> सार्वजनिक श्रेणी अपलोड कंट्रोलर: एपीआईकंट्रोलर {सार्वजनिक एएसआईएनसीके टास्क एंड एलटी; एचटीटीपीआरपीएसपॉर्मेस & gt; PostFile () {// जांचें कि क्या अनुरोध में बहुभाषी / फॉर्म-डेटा शामिल है यदि (! अनुरोध। कंटेंट। आईएसएमएम मल्टीपार्ट कॉन्टेंट ()) (नया एचटीटीपीआरपीएसपेशन एक्सपैशन (एचटीटीपीटीटास कोड। असमर्थित मीडिया टाईप); } स्ट्रिंग रूट = HttpContext.Current.Server.MapPath ("~ / App_Data"); Var प्रदाता = नया MultipartFormDataStreamProvider (रूट); कोशिश {StringBuilder sb = नया StringBuilder (); // प्रतिक्रिया शरीर पकड़ता है // फ़ॉर्म डेटा पढ़ें और एक async कार्य वापस। Request.Content.ReadAsMultipartAsync (प्रदाता) का इंतजार; // यह दिखाता है कि फॉर्म डेटा कैसे प्राप्त करें foreach (provider.FormData.AllKeys में वर कुंजी) {foreach (provider.FormData.GetValues में वर वैल (key)) {sb.Append (String.Format ( "{0}: {1} \ n", कुंजी, वैल )); }} // यह दिखाता है कि अपलोड किए गए फाइलों के लिए फ़ाइल नाम कैसे प्राप्त करें विदेशी मुद्रा (प्रदाता में फाइल। फाइलडेटा) {FileInfo fileInfo = नई फ़ाइलइंफो (file.LocalFileName); Sb.Append (string.Format ("अपलोड की गई फ़ाइल: {0} ({1} बाइट्स) \ n", fileInfo.Name, fileInfo.Length)); } नए एचटीटीपी रीस्पॉन्समेस () को वापस लौटें) {सामग्री = नया स्ट्रिंग कॉन्टेंट (एसबी.ToString ())}; } पकड़ (System.Exception ई) {वापसी अनुरोध। क्रेतेईआररप्रेसपेज (HttpStatusCode.InternalServerError, e); }}} पर क्लिक करें
Comments
Post a Comment