一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net 模擬提交有文件上傳的表單(通過http模擬上傳文件)

asp.net 模擬提交有文件上傳的表單(通過http模擬上傳文件)

2019-07-11 16:29ASP.NET之家 ASP.NET教程

通過HTTP模擬GET或POST請求,提交數據到服務端獲取響應,比較常見些;但如上傳文件到服務端,使用html form當然簡單了,而因環境所限有時需要使用模擬方法去提交有附件(文件上傳)的表單。

我們暫且不說如何去模擬數據,通過一個簡單的form看看當請求發生時,客戶端提交了什么樣的數據給服務端。 
下面是一個簡單的html form,兩個文本輸入框,一個文件上傳(這里我選擇一張圖片),注意有文件上傳的form的enctype屬性。 

復制代碼代碼如下:


<form action="sql.aspx" method="post" enctype="multipart/form-data"> 
<input id="Text1" name="content" type="text" /><br /> 
<input id="Text2" name="uploadImg" type="text" /><br /> 
<input id="File1" type="file" name="image0" /><br /> 
<input id="Submit1" type="submit" value="submit" /> 
</form> 


為了查看表單提交時,向服務端post了什么數據,這里我使用Fiddler來查看。Fiddler確實是個不錯的工具,注意當url主機地址是localhost時Fiddler捕獲不到,需要再localhost后加一點(.)即可,打開Fiddler,瀏覽帶上面form的page,輸入數據提交,此時在Fiddler中可看到post的數據了。下面是一部份數據的截圖。 

分析其中的數據不難得出,一個表單中的數據域(input type="text")對應的格式為 

-----------------------------7da119c1004a6 
Content-Disposition: form-data; name="content" 

this is a txt value 
一個文件(input type="file")對應的格式為(通常為表單最后一個參數) 

-----------------------------7da119c1004a6 
Content-Disposition: form-data; name="image0"; filename="E:\CAI\875.jpg" 
Content-Type: image/pjpeg 

[文件內容] 
結尾處是-----------------------------7da119c1004a6-- 



有了上面的數據做參考,按照其格式組織數據,post到服務端,同樣可以達到html form提交的效果。要特別注意其格式:如回車換行,差一個都可能得不到正確的響應,還有請求的Content-Length一定計算對。下面是一個參考: 

代碼 

復制代碼代碼如下:


public string POSTfile(string v1,string v2, string file) 

string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); 

//請求 
WebRequest req = WebRequest.Create(@"http://localhost.:4944/WebSite1/getfile.aspx"); 
req.Method = "POST"; 
req.ContentType = "multipart/form-data; boundary=" + boundary; 

//組織表單數據 
StringBuilder sb = new StringBuilder(); 
sb.Append("--" + boundary); 
sb.Append("\r\n"); 
sb.Append("Content-Disposition: form-data; name=\"content\""); 
sb.Append("\r\n\r\n"); 
sb.Append(v1); 
sb.Append("\r\n"); 

sb.Append("--" + boundary); 
sb.Append("\r\n"); 
sb.Append("Content-Disposition: form-data; name=\"uploadImg\""); 
sb.Append("\r\n\r\n"); 
sb.Append("v2"); 
sb.Append("\r\n"); 

sb.Append("--" + boundary); 
sb.Append("\r\n"); 
sb.Append("Content-Disposition: form-data; name=\"image0\"; filename=\"e:\\a.jpg\""); 
sb.Append("\r\n"); 
sb.Append("Content-Type: image/pjpeg"); 
sb.Append("\r\n\r\n"); 

string head = sb.ToString(); 
byte[] form_data = Encoding.UTF8.GetBytes(head); 
//結尾 
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n"); 

//文件 
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read); 
//post總長度 
long length = form_data.Length + fileStream.Length + foot_data.Length; 
req.ContentLength = length; 

Stream requestStream = req.GetRequestStream(); 
//發送表單參數 
requestStream.Write(form_data, 0, form_data.Length); 
//文件內容 
byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))]; 
int bytesRead = 0; 
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) 
requestStream.Write(buffer, 0, bytesRead); 
//結尾 
requestStream.Write(foot_data, 0, foot_data.Length); 
requestStream.Close(); 

//響應 
WebResponse pos = req.GetResponse(); 
StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8); 
string html = sr.ReadToEnd().Trim(); 
sr.Close(); 
if (pos != null) 

pos.Close(); 
pos = null; 

if (req != null) 

req = null; 

return html; 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产三级自拍 | 水蜜桃一二二区视在线 | 1024国产高清精品推荐 | 99久久免费国产精品热 | 午夜神器老司机高清无码 | 性欧美高清理论片 | 午夜成私人影院在线观看 | 男人操美女视频 | 3344在线看片 | 韩国甜性涩爱在线播放 | 日本在线视频网址 | 欧美日韩高清观看一区二区 | 色一情一区二区三区四区 | 91看片淫黄大片欧美看国产片 | 91青青草原| 成人动漫影院 | 国产女王女m视频vk 国产农村一级特黄α真人毛片 | 全肉一女n男np高h乳 | 欧美成人精品福利在线视频 | 午夜神器18以下不能进免费 | 国产第7页 | 成年美女黄网色大观看全 | 34看网片午夜理 | 门卫老张和女警花小说 | 国产精品思瑞在线观看 | 国产拍拍拍免费专区在线观看 | 99在线视频免费 | 欧美胖逼| 欧美日韩精品乱国产 | 色图大全| 97视频久久 | 成人精品区 | 亚洲国产天堂在线观看 | 男人把j放进女人的p里视频 | 免费大秀视频在线播放 | 久久伊人精品青青草原2021 | 免费jizz在在线播放国产 | 亚洲国产成人在人网站天堂 | 男人把j放进女人的p里视频 | 黄色大片网站 | 日本成人免费在线视频 |