asp.net中使用HttpWebRequest发送上传文件

本文介绍了如何使用HttpWebRequest实现从一个网站直接上传文件到另一个网站的技术。通过构建HttpWebRequest请求并利用字节流发送文件,避免了先上传到服务器再转发的步骤。文章提供了发送与接收端的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个网站中需要上传一个文件到另一个网站,可以使用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/

转载于:https://www.cnblogs.com/bossma/archive/2011/03/03/2003753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值