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/

  • 相关阅读:
    apache
    zabbix 问题
    node起步
    记录一次利用cropperjs修建图片并上传的过程
    vue走过的那些坑
    关于vue传参问题
    mybatis的走过的坑
    通常如何对网站的文件和资源进行优化?
    一个页面从输入URL到页面加载显示完成,这个过程都发生什么?
    JQuery---过滤器
  • 原文地址:https://www.cnblogs.com/bossma/p/2003753.html
Copyright © 2011-2022 走看看