zoukankan      html  css  js  c++  java
  • asp.net中使用HttpWebRequest发送上传文件

    一个网站中需要上传一个文件到另一个网站,可以使用HttpWebRequest或者WebClient。
    但是WebClient需要首先上传文件到服务器,才能执行发送,不太符合我的需求,这里不再介绍。

    通过HttpWebRequest发送的原理:
    构建一个HttpWebRequest,通过FileUpload获取要上传的文件,通过字节流发送这个文件,另一个网站接收字节流,保存到服务器。

    发送程序:

    //获取要上传的文件信息
            byte[] data = fileupload1.FileBytes;
            string fileName = fileupload1.FileName;
            string fileType = fileupload1.PostedFile.ContentType;
            string fileSize = data.Length.ToString();
      
            HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8102/Default.aspx");
            myRequest.Method = "POST";
            myRequest.ContentType = fileType;
            myRequest.ContentLength = data.Length;
            myRequest.Headers.Add("FileType", Server.UrlEncode(fileType));
            myRequest.Headers.Add("FileSize", fileSize);
            myRequest.Headers.Add("FileName", Server.UrlEncode(fileName));
      
            using (Stream newStream = myRequest.GetRequestStream())
            {
                // Send the data.
                newStream.Write(data, 0, data.Length);
                newStream.Close();
            }
      
            // Get response
            HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
            StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
            string content = reader.ReadToEnd();

    接收程序:

    string fileName = Server.UrlDecode(Request.Headers["FileName"].ToString());
                string fileType = Server.UrlDecode(Request.Headers["FileType"].ToString());
                int fileSize = int.Parse(Request.Headers["FileSize"].ToString());
      
                byte[] bytes = Request.BinaryRead(fileSize);
                File.WriteAllBytes(Server.MapPath("~/uploadfiles/" + fileName), bytes);
      
                Response.HeaderEncoding = System.Text.Encoding.UTF8;
                Response.Charset = "utf-8";
                Response.Write("FileType:" + fileType + ";FileName:" + fileName + ";FileSize:" + fileSize);

    来源:http://blog.bossma.cn/dotnet/asp-net-httpwebrequest-upload-send-file/

  • 相关阅读:
    EditText setError 图片不显示问题
    android TextView getlinecount返回0
    PANIC: Could not open AVD config file:
    case expressions must be constant expressions
    无法创建抽象类或接口“Newtonsoft.Json.JsonWriter”的实例
    Listview嵌套ListView 及包含button onItemClic失效问题
    errror initializing phoneGap:class not found
    动态添加ImageView 设置setPadding不起作用问题
    Parameter 参数替换成value
    Listview addHeaderView添加view报错
  • 原文地址:https://www.cnblogs.com/bossma/p/2003753.html
Copyright © 2011-2022 走看看