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/

  • 相关阅读:
    【Linux高级驱动】如何分析并移植网卡驱动
    【Linux高级驱动】网卡驱动分析
    【Linux高级驱动】I2C驱动框架分析
    【Linux高级驱动】触摸屏工作原理与工作流程
    【Linux高级驱动】触摸屏驱动的移植
    【Linux高级驱动】input子系统框架
    【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核
    【Linux高级驱动】rtc驱动开发
    【Linux高级驱动】linux设备驱动模型之平台设备驱动机制
    【Linux】Linux基本命令扫盲
  • 原文地址:https://www.cnblogs.com/bossma/p/2003753.html
Copyright © 2011-2022 走看看