狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

c#使用HttpWebRequest上傳文件同時(shí)攜帶其他參數(shù)

admin
2017年3月22日 0:30 本文熱度 6534
 這個(gè)小程序參考了另一位博友的代碼,做了稍許調(diào)整,創(chuàng)建的兩個(gè)Handler程序,一個(gè)上傳的ashx,一個(gè)接收的ashx

上傳文件代碼

[csharp] view plain copy
  1. public void ProcessRequest(HttpContext context)  
  2.         {  
  3.             //參考http://www.cnblogs.com/greenerycn/archive/2010/05/15/csharp_http_post.html  
  4.             string filePath = "d:\\apple4.jpg";  
  5.             string fileName = "apple4.jpg";  
  6.             string postURL = "http://192.168.1.11/testhandler/accfile.ashx";  
  7.               
  8.             // 邊界符  
  9.             var boundary = "---------------" + DateTime.Now.Ticks.ToString("x");  
  10.             var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n");  
  11.             var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);  
  12.   
  13.             // 最后的結(jié)束符  
  14.             var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n");  
  15.   
  16.             // 文件參數(shù)頭  
  17.             const string filePartHeader =  
  18.                 "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" +  
  19.                  "Content-Type: application/octet-stream\r\n\r\n";  
  20.             var fileHeader = string.Format(filePartHeader, "file", fileName);  
  21.             var fileHeaderBytes = Encoding.UTF8.GetBytes(fileHeader);  
  22.   
  23.             // 開始拼數(shù)據(jù)  
  24.             var memStream = new MemoryStream();  
  25.             memStream.Write(beginBoundary, 0, beginBoundary.Length);  
  26.   
  27.             // 文件數(shù)據(jù)  
  28.             memStream.Write(fileHeaderBytes, 0, fileHeaderBytes.Length);  
  29.             var buffer = new byte[1024];  
  30.             int bytesRead; // =0  
  31.             while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)  
  32.             {  
  33.                 memStream.Write(buffer, 0, bytesRead);  
  34.             }  
  35.             fileStream.Close();  
  36.   
  37.             // Key-Value數(shù)據(jù)  
  38.             var stringKeyHeader = "\r\n--" + boundary +  
  39.                                    "\r\nContent-Disposition: form-data; name=\"{0}\"" +  
  40.                                    "\r\n\r\n{1}\r\n";  
  41.   
  42.             Dictionary<stringstring> stringDict = new Dictionary<stringstring>();  
  43.             stringDict.Add("len""500");  
  44.             stringDict.Add("wid""300");  
  45.             foreach (byte[] formitembytes in from string key in stringDict.Keys  
  46.                                              select string.Format(stringKeyHeader, key, stringDict[key])  
  47.                                                  into formitem  
  48.                                                  select Encoding.UTF8.GetBytes(formitem))  
  49.             {  
  50.                 memStream.Write(formitembytes, 0, formitembytes.Length);  
  51.             }  
  52.   
  53.             // 寫入最后的結(jié)束邊界符  
  54.             memStream.Write(endBoundary, 0, endBoundary.Length);  
  55.   
  56.             //倒騰到tempBuffer?  
  57.             memStream.Position = 0;  
  58.             var tempBuffer = new byte[memStream.Length];  
  59.             memStream.Read(tempBuffer, 0, tempBuffer.Length);  
  60.             memStream.Close();  
  61.   
  62.             // 創(chuàng)建webRequest并設(shè)置屬性  
  63.             var webRequest = (HttpWebRequest)WebRequest.Create(postURL);  
  64.             webRequest.Method = "POST";  
  65.             webRequest.Timeout = 100000;  
  66.             webRequest.ContentType = "multipart/form-data; boundary=" + boundary;  
  67.             webRequest.ContentLength = tempBuffer.Length;  
  68.   
  69.             var requestStream = webRequest.GetRequestStream();  
  70.             requestStream.Write(tempBuffer, 0, tempBuffer.Length);  
  71.             requestStream.Close();  
  72.   
  73.             var httpWebResponse = (HttpWebResponse)webRequest.GetResponse();  
  74.             string responseContent;  
  75.             using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(),Encoding.GetEncoding("utf-8")))  
  76.             {  
  77.                 responseContent = httpStreamReader.ReadToEnd();  
  78.             }  
  79.   
  80.             httpWebResponse.Close();  
  81.             webRequest.Abort();  
  82.   
  83.             context.Response.ContentType = "text/plain";  
  84.             context.Response.Write(responseContent);  
  85.         }  

接收文件

[csharp] view plain copy
  1. public void ProcessRequest(HttpContext context)  
  2.         {  
  3.             context.Response.ContentType = "text/plain";  
  4.             if (context.Request.Files.Count == 0)  
  5.             {  
  6.                 context.Response.Write("No file");  
  7.                 return;  
  8.             }  
  9.   
  10.             HttpPostedFile f1 = context.Request.Files[0];  
  11.             System.Drawing.Image image = System.Drawing.Image.FromStream(f1.InputStream);  
  12.             image.Save("d:\\upload.jpg");  
  13.               
  14.             string strPars="";  
  15.             foreach (var key in context.Request.Form.AllKeys)  
  16.             {  
  17.                 string val = context.Request[key];  
  18.                 strPars += "["+key + ":" + val + "] ";  
  19.             }  
  20.   
  21.             image.Dispose();  
  22.             context.Response.Write("OK Get File:" + f1.FileName + " Pars:" + strPars);  
  23.         }  

該文章在 2017/3/22 0:30:22 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved