• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    Asp.Net模擬表單提交數據和上傳文件的實現代碼

    來源:懂視網 責編:小采 時間:2020-11-27 22:38:57
    文檔

    Asp.Net模擬表單提交數據和上傳文件的實現代碼

    Asp.Net模擬表單提交數據和上傳文件的實現代碼:如果你需要跨域上傳內容到另外一個域名并且需要獲取返回值,使用Asp.Net的作為代理是最好的辦法,要是客戶端直接提交到iframe中,由于跨域是無法用javascript獲取到iframe中返回的內容的。此時需要在自己的網站做一個動態頁作為代理,將表單提交到動態頁,動
    推薦度:
    導讀Asp.Net模擬表單提交數據和上傳文件的實現代碼:如果你需要跨域上傳內容到另外一個域名并且需要獲取返回值,使用Asp.Net的作為代理是最好的辦法,要是客戶端直接提交到iframe中,由于跨域是無法用javascript獲取到iframe中返回的內容的。此時需要在自己的網站做一個動態頁作為代理,將表單提交到動態頁,動

    如果你需要跨域上傳內容到另外一個域名并且需要獲取返回值,使用Asp.Net的作為代理是最好的辦法,要是客戶端直接提交到iframe中,由于跨域是無法用javascript獲取到iframe中返回的內容的。此時需要在自己的網站做一個動態頁作為代理,將表單提交到動態頁,動態頁負責將表單的內容使用WebClient或HttpWebRequest將表單數據再上傳到遠程服務器,由于在服務器端進行操作,就不存在跨域問題了。

    WebClient上傳只包含鍵值對的文本信息示例代碼:

    代碼如下:
    string uriString = "http://localhost/login.aspx";
    // 創建一個新的 WebClient 實例.
    WebClient myWebClient = new WebClient();
    string postData = "Username=admin&Password=admin";
    // 注意這種拼字符串的ContentType
    myWebClient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
    // 轉化成二進制數組
    byte[] byteArray = Encoding.ASCII.GetBytes(postData);
    // 上傳數據,并獲取返回的二進制數據.
    byte[] responseArray = myWebClient.UploadData(uriString,"POST",byteArray);

    WebClient上傳只包含文件的示例代碼:

    代碼如下:
    String uriString = "http://localhost/uploadFile.aspx";
    // 創建一個新的 WebClient 實例.
    WebClient myWebClient = new WebClient();
    string fileName = @"C:/upload.txt";
    // 直接上傳,并獲取返回的二進制數據.
    byte[] responseArray = myWebClient.UploadFile(uriString,"POST",fileName);

     對于既包含文件又包含文本鍵值對信息的示例代碼,需要構造表單提交的內容,對于學asp的同學來說,下面的表單提交內容一定不會陌生
    代碼如下:
    -----------------------------7d429871607fe
    Content-Disposition: form-data; name="file1"; filename="G:/homepage.txt"
    Content-Type: text/plain
    腳本之家://www.gxlcms.com
    -----------------------------7d429871607fe
    Content-Disposition: form-data; name="filename"
    default filename
    -----------------------------7d429871607fe--

      所以只要拼一個這樣的byte[] data數據Post過去,就可以達到同樣的效果了。但是一定要注意,對于這種帶有文件上傳的,其ContentType是不一樣的,例如上面的這種,其ContentType為"multipart/form-data; boundary=---------------------------7d429871607fe"。有了ContentType,我們就可以知道boundary(就是上面的"---------------------------7d429871607fe"),知道boundary了我們就可以構造出我們所需要的byte[] data了,最后,不要忘記,把我們構造的ContentType傳到WebClient中(例如:webClient.Headers.Add("Content-Type", ContentType);)這樣,就可以通過WebClient.UploadData 方法上載文件數據了。

    using System;
    using System.Web;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Collections;
    namespace UploadData.Common
    {
     public class CreateBytes
     {
     Encoding encoding = Encoding.UTF8;
     public byte[] JoinBytes(ArrayList byteArrays)
     {
     int length = 0;
     int readLength = 0;
     // 加上結束邊界
     string endBoundary = Boundary + "-- ";
     byte[] endBoundaryBytes = encoding.GetBytes(endBoundary);
     byteArrays.Add(endBoundaryBytes);
     foreach (byte[] b in byteArrays)
     {
     length += b.Length;
     }
     byte[] bytes = new byte[length];
     // 遍歷復制
     foreach (byte[] b in byteArrays)
     {
     b.CopyTo(bytes, readLength);
     readLength += b.Length;
     }
     return bytes;
     }
     public bool UploadData(string uploadUrl, byte[] bytes, out byte[] responseBytes)
     {
     WebClient webClient = new WebClient();
     webClient.Headers.Add("Content-Type", ContentType);
     try
     {
     responseBytes = webClient.UploadData(uploadUrl, bytes);
     return true;
     }
     catch (WebException ex)
     {
     Stream resp = ex.Response.GetResponseStream();
     responseBytes = new byte[ex.Response.ContentLength];
     resp.Read(responseBytes, 0, responseBytes.Length);
     }
     return false;
     }
     /// 獲取普通表單區域二進制數組
     public byte[] CreateFieldData(string fieldName, string fieldValue)
     {
     string textTemplate = Boundary + " Content-Disposition: form-data; name="{0}" {1} ";
     string text = String.Format(textTemplate, fieldName, fieldValue);
     byte[] bytes = encoding.GetBytes(text);
     return bytes;
     }
     public byte[] CreateFieldData(string fieldName, string filename, string contentType, byte[] fileBytes)
     {
     string end = " ";
     string textTemplate = Boundary + " Content-Disposition: form-data; name="{0}"; filename="{1}" Content-Type: {2} ";
     // 頭數據
     string data = String.Format(textTemplate, fieldName, filename, contentType);
     byte[] bytes = encoding.GetBytes(data);
     // 尾數據
     byte[] endBytes = encoding.GetBytes(end);
     // 合成后的數組
     byte[] fieldData = new byte[bytes.Length + fileBytes.Length + endBytes.Length];
     bytes.CopyTo(fieldData, 0); // 頭數據
     fileBytes.CopyTo(fieldData, bytes.Length); // 文件的二進制數據
     endBytes.CopyTo(fieldData, bytes.Length + fileBytes.Length); // 
     return fieldData;
     }
     public string Boundary
     {
     get
     {
     string[] bArray, ctArray;
     string contentType = ContentType;
     ctArray = contentType.Split(';');
     if (ctArray[0].Trim().ToLower() == "multipart/form-data")
     {
     bArray = ctArray[1].Split('=');
     return "--" + bArray[1];
     }
     return null;
     }
     }
     public string ContentType
     {
     get
     {
     if (HttpContext.Current == null)
     {
     return "multipart/form-data; boundary=---------------------------7d5b915500cee";
     }
     return HttpContext.Current.Request.ContentType;
     }
     }
     }
    }
    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;
    using UploadData.Common;
    using System.IO;
    namespace UploadDataWin
    {
     public class frmUpload : System.Windows.Forms.Form
     {
     private System.Windows.Forms.Label lblAmigoToken;
     private System.Windows.Forms.TextBox txtAmigoToken;
     private System.Windows.Forms.Label lblFilename;
     private System.Windows.Forms.TextBox txtFilename;
     private System.Windows.Forms.Button btnBrowse;
     private System.Windows.Forms.TextBox txtFileData;
     private System.Windows.Forms.Label lblFileData;
     private System.Windows.Forms.Button btnUpload;
     private System.Windows.Forms.OpenFileDialog openFileDialog1;
     private System.Windows.Forms.TextBox txtResponse;
     private System.ComponentModel.Container components = null;
     public frmUpload()
     {
     InitializeComponent();
     }
     protected override void Dispose(bool disposing)
     {
     if (disposing)
     {
     if (components != null)
     {
     components.Dispose();
     }
     }
     base.Dispose(disposing);
     }
     private void InitializeComponent()
     {
     this.lblAmigoToken = new System.Windows.Forms.Label();
     this.txtAmigoToken = new System.Windows.Forms.TextBox();
     this.lblFilename = new System.Windows.Forms.Label();
     this.txtFilename = new System.Windows.Forms.TextBox();
     this.btnBrowse = new System.Windows.Forms.Button();
     this.txtFileData = new System.Windows.Forms.TextBox();
     this.lblFileData = new System.Windows.Forms.Label();
     this.btnUpload = new System.Windows.Forms.Button();
     this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
     this.txtResponse = new System.Windows.Forms.TextBox();
     this.SuspendLayout();
     // 
     // lblAmigoToken
     // 
     this.lblAmigoToken.Location = new System.Drawing.Point(40, 48);
     this.lblAmigoToken.Name = "lblAmigoToken";
     this.lblAmigoToken.Size = new System.Drawing.Size(72, 23);
     this.lblAmigoToken.TabIndex = 0;
     this.lblAmigoToken.Text = "AmigoToken";
     // 
     // txtAmigoToken
     // 
     this.txtAmigoToken.Location = new System.Drawing.Point(120, 48);
     this.txtAmigoToken.Name = "txtAmigoToken";
     this.txtAmigoToken.Size = new System.Drawing.Size(248, 21);
     this.txtAmigoToken.TabIndex = 1;
     this.txtAmigoToken.Text = "";
     // 
     // lblFilename
     // 
     this.lblFilename.Location = new System.Drawing.Point(40, 96);
     this.lblFilename.Name = "lblFilename";
     this.lblFilename.Size = new System.Drawing.Size(80, 23);
     this.lblFilename.TabIndex = 2;
     this.lblFilename.Text = "Filename";
     // 
     // txtFilename
     // 
     this.txtFilename.Location = new System.Drawing.Point(120, 96);
     this.txtFilename.Name = "txtFilename";
     this.txtFilename.Size = new System.Drawing.Size(248, 21);
     this.txtFilename.TabIndex = 3;
     this.txtFilename.Text = "";
     // 
     // btnBrowse
     // 
     this.btnBrowse.Location = new System.Drawing.Point(296, 144);
     this.btnBrowse.Name = "btnBrowse";
     this.btnBrowse.TabIndex = 4;
     this.btnBrowse.Text = "瀏覽";
     this.btnBrowse.Click += new System.EventHandler(this.btnBrowse_Click);
     // 
     // txtFileData
     // 
     this.txtFileData.Location = new System.Drawing.Point(120, 144);
     this.txtFileData.Name = "txtFileData";
     this.txtFileData.Size = new System.Drawing.Size(168, 21);
     this.txtFileData.TabIndex = 5;
     this.txtFileData.Text = "";
     // 
     // lblFileData
     // 
     this.lblFileData.Location = new System.Drawing.Point(40, 144);
     this.lblFileData.Name = "lblFileData";
     this.lblFileData.Size = new System.Drawing.Size(72, 23);
     this.lblFileData.TabIndex = 6;
     this.lblFileData.Text = "FileData";
     // 
     // btnUpload
     // 
     this.btnUpload.Location = new System.Drawing.Point(48, 184);
     this.btnUpload.Name = "btnUpload";
     this.btnUpload.TabIndex = 7;
     this.btnUpload.Text = "Upload";
     this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click);
     // 
     // txtResponse
     // 
     this.txtResponse.Location = new System.Drawing.Point(136, 184);
     this.txtResponse.Multiline = true;
     this.txtResponse.Name = "txtResponse";
     this.txtResponse.Size = new System.Drawing.Size(248, 72);
     this.txtResponse.TabIndex = 8;
     this.txtResponse.Text = "";
     // 
     // frmUpload
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
     this.ClientSize = new System.Drawing.Size(400, 269);
     this.Controls.Add(this.txtResponse);
     this.Controls.Add(this.btnUpload);
     this.Controls.Add(this.lblFileData);
     this.Controls.Add(this.txtFileData);
     this.Controls.Add(this.btnBrowse);
     this.Controls.Add(this.txtFilename);
     this.Controls.Add(this.lblFilename);
     this.Controls.Add(this.txtAmigoToken);
     this.Controls.Add(this.lblAmigoToken);
     this.Name = "frmUpload";
     this.Text = "frmUpload";
     this.ResumeLayout(false);
     }
     [STAThread]
     static void Main()
     {
     Application.Run(new frmUpload());
     }
     private void btnUpload_Click(object sender, System.EventArgs e)
     {
     // 非空檢驗
     if (txtAmigoToken.Text.Trim() == "" || txtFilename.Text == "" || txtFileData.Text.Trim() == "")
     {
     MessageBox.Show("Please fill data");
     return;
     }
     // 所要上傳的文件路徑
     string path = txtFileData.Text.Trim();
     // 檢查文件是否存在
     if (!File.Exists(path))
     {
     MessageBox.Show("{0} does not exist!", path);
     return;
     }
     // 讀文件流
     FileStream fs = new FileStream(path, FileMode.Open,
     FileAccess.Read, FileShare.Read);
     // 這部分需要完善
     string ContentType = "application/octet-stream";
     byte[] fileBytes = new byte[fs.Length];
     fs.Read(fileBytes, 0, Convert.ToInt32(fs.Length));
     // 生成需要上傳的二進制數組
     CreateBytes cb = new CreateBytes();
     // 所有表單數據
     ArrayList bytesArray = new ArrayList();
     // 普通表單
     bytesArray.Add(cb.CreateFieldData("FileName", txtFilename.Text));
     bytesArray.Add(cb.CreateFieldData("AmigoToken", txtAmigoToken.Text));
     // 文件表單
     bytesArray.Add(cb.CreateFieldData("FileData", path
     , ContentType, fileBytes));
     // 合成所有表單并生成二進制數組
     byte[] bytes = cb.JoinBytes(bytesArray);
     // 返回的內容
     byte[] responseBytes;
     // 上傳到指定Url
     bool uploaded = cb.UploadData("http://localhost/UploadData/UploadAvatar.aspx", bytes, out responseBytes);
     // 將返回的內容
    輸出到文件 using (FileStream file = new FileStream(@"c: esponse.text", FileMode.Create, FileAccess.Write, FileShare.Read)) { file.Write(responseBytes, 0, responseBytes.Length); } txtResponse.Text = System.Text.Encoding.UTF8.GetString(responseBytes); } private void btnBrowse_Click(object sender, System.EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { txtFileData.Text = openFileDialog1.FileName; } } } }

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

    文檔

    Asp.Net模擬表單提交數據和上傳文件的實現代碼

    Asp.Net模擬表單提交數據和上傳文件的實現代碼:如果你需要跨域上傳內容到另外一個域名并且需要獲取返回值,使用Asp.Net的作為代理是最好的辦法,要是客戶端直接提交到iframe中,由于跨域是無法用javascript獲取到iframe中返回的內容的。此時需要在自己的網站做一個動態頁作為代理,將表單提交到動態頁,動
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品极品| 精品国产一级在线观看 | 久久青青草原精品国产| 久久精品国产99国产精品| 国内精品久久久久久野外| 国产综合精品女在线观看| 自拍偷自拍亚洲精品第1页 | 无码人妻精品一区二区三区东京热 | 一本一本久久A久久综合精品 | 国产99视频精品免费视频76| 99久久精品国产免看国产一区| 全球AV集中精品导航福利| 日韩精品无码Av一区二区| 精品久久久久久久久久中文字幕| 欧美一卡2卡3卡四卡海外精品| 精品国产乱码久久久久久1区2区| 中文字幕日韩精品有码视频| 亚洲国产综合精品一区在线播放 | 91视频国产精品| 国产精品嫩草影院AV| 精品无码一区在线观看| 欧美精品欧美人与动人物牲交| 一区二区三区精品高清视频免费在线播放 | 国精品无码一区二区三区在线 | 精品国偷自产在线| 97热久久免费频精品99| 国产成人精品高清在线观看93| 国产精品露脸国语对白| 国产探花在线精品一区二区| 国产精品精品自在线拍| 91精品国产91久久综合| 精品国产亚洲一区二区三区| 久久国产精品-国产精品| 无码精品一区二区三区免费视频| 欧美精品一本久久男人的天堂| 911亚洲精品不卡| 国产精品天干天干在线综合 | 国产精品无码专区| 国产成人精品亚洲日本在线| 久久久国产精品福利免费 | 国产精品V亚洲精品V日韩精品|