• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

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

    來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:43:27
    文檔

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

    asp.net 模擬提交有文件上傳的表單(通過http模擬上傳文件):我們暫且不說如何去模擬數(shù)據(jù),通過一個簡單的form看看當(dāng)請求發(fā)生時,客戶端提交了什么樣的數(shù)據(jù)給服務(wù)端。 下面是一個簡單的html form,兩個文本輸入框,一個文件上傳(這里我選擇一張圖片),注意有文件上傳的form的enctype屬性。 代碼如下:<form
    推薦度:
    導(dǎo)讀asp.net 模擬提交有文件上傳的表單(通過http模擬上傳文件):我們暫且不說如何去模擬數(shù)據(jù),通過一個簡單的form看看當(dāng)請求發(fā)生時,客戶端提交了什么樣的數(shù)據(jù)給服務(wù)端。 下面是一個簡單的html form,兩個文本輸入框,一個文件上傳(這里我選擇一張圖片),注意有文件上傳的form的enctype屬性。 代碼如下:<form

    我們暫且不說如何去模擬數(shù)據(jù),通過一個簡單的form看看當(dāng)請求發(fā)生時,客戶端提交了什么樣的數(shù)據(jù)給服務(wù)端。
    下面是一個簡單的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>

    為了查看表單提交時,向服務(wù)端post了什么數(shù)據(jù),這里我使用Fiddler來查看。Fiddler確實是個不錯的工具,注意當(dāng)url主機地址是localhost時Fiddler捕獲不到,需要再localhost后加一點(.)即可,打開Fiddler,瀏覽帶上面form的page,輸入數(shù)據(jù)提交,此時在Fiddler中可看到post的數(shù)據(jù)了。下面是一部份數(shù)據(jù)的截圖。
    表單提交的數(shù)據(jù)
    分析其中的數(shù)據(jù)不難得出,一個表單中的數(shù)據(jù)域(input type="text")對應(yīng)的格式為

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

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

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

    [文件內(nèi)容]
    結(jié)尾處是-----------------------------7da119c1004a6--

    有了上面的數(shù)據(jù)做參考,按照其格式組織數(shù)據(jù),post到服務(wù)端,同樣可以達(dá)到html form提交的效果。要特別注意其格式:如回車換行,差一個都可能得不到正確的響應(yīng),還有請求的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;

    //組織表單數(shù)據(jù)
    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);
    //結(jié)尾
    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();
    //發(fā)送表單參數(shù)
    requestStream.Write(form_data, 0, form_data.Length);
    //文件內(nèi)容
    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);
    //結(jié)尾
    requestStream.Write(foot_data, 0, foot_data.Length);
    requestStream.Close();

    //響應(yīng)
    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;
    }

    聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

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

    asp.net 模擬提交有文件上傳的表單(通過http模擬上傳文件):我們暫且不說如何去模擬數(shù)據(jù),通過一個簡單的form看看當(dāng)請求發(fā)生時,客戶端提交了什么樣的數(shù)據(jù)給服務(wù)端。 下面是一個簡單的html form,兩個文本輸入框,一個文件上傳(這里我選擇一張圖片),注意有文件上傳的form的enctype屬性。 代碼如下:<form
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久66热人妻偷产精品9| 国产精品99精品无码视亚| 精品欧洲av无码一区二区| 精品一区二区三区色花堂| 精品久久久久久综合日本| 久久夜色精品国产欧美乱| 伊人久久精品影院| 99精品在线观看| 亚洲国产精品久久久天堂| 国产在线国偷精品免费看| 国产在线精品网址你懂的| 熟女精品视频一区二区三区| 国产天天综合永久精品日| 久久精品国产福利国产秒| 国语自产精品视频在线区| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 国产精品久久久亚洲| 久久噜噜久久久精品66| 国产欧美一区二区精品性色99| 四虎精品影院4hutv四虎| 国产精品嫩草视频永久网址| 国产精品视频一区二区噜噜| 久久精品国产亚洲AV电影| 色欲久久久天天天综合网精品| 亚洲精品动漫人成3d在线| 午夜精品久久久久久影视777| 精品久久久久中文字幕一区| 国产精品主播一区二区| 国产精品福利片免费看| 成人精品一区二区三区免费看| 久久99精品国产一区二区三区| 国产69精品久久久久777| 国产国拍亚洲精品mv在线观看| 国产欧美亚洲精品A| 国产欧美日韩精品a在线观看| 精品国产乱码久久久久久1区2区 | 久久亚洲国产欧洲精品一| 精品一区二区久久久久久久网站| 99精品人妻无码专区在线视频区| 国产三级久久久精品麻豆三级| 2022国产精品自产拍在线观看|