asp.net中使用HttpWebRequest发送上传文件
2011-03-03 13:03
633 查看
一个网站中需要上传一个文件到另一个网站,可以使用HttpWebRequest或者WebClient。
但是WebClient需要首先上传文件到服务器,才能执行发送,不太符合我的需求,这里不再介绍。
通过HttpWebRequest发送的原理:
构建一个HttpWebRequest,通过FileUpload获取要上传的文件,通过字节流发送这个文件,另一个网站接收字节流,保存到服务器。
发送程序:
查看源代码
打印?
接收程序:
查看源代码
打印?
来源:http://blog.bossma.cn/dotnet/asp-net-httpwebrequest-upload-send-file/
但是WebClient需要首先上传文件到服务器,才能执行发送,不太符合我的需求,这里不再介绍。
通过HttpWebRequest发送的原理:
构建一个HttpWebRequest,通过FileUpload获取要上传的文件,通过字节流发送这个文件,另一个网站接收字节流,保存到服务器。
发送程序:
//获取要上传的文件信息 |
byte []data=fileupload1.FileBytes; |
string fileName=fileupload1.FileName; |
string fileType=fileupload1.PostedFile.ContentType; |
string fileSize=data.Length.ToString(); |
HttpWebRequestmyRequest=(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 (StreamnewStream=myRequest.GetRequestStream()) |
{ |
//Sendthedata. |
newStream.Write(data,0,data.Length); |
newStream.Close(); |
} |
//Getresponse |
HttpWebResponsemyResponse=(HttpWebResponse)myRequest.GetResponse(); |
StreamReaderreader= 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); |
相关文章推荐
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- asp.net使用FtpWebRequest向ftp上传文件报错 基础连接已经关闭: 服务器提交了协议冲突
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- 使用HttpWebRequest实现大文件上传(一)
- IOS 使用ASIHttpRequest 或 MKNetworkKit 上传图片到ASP.NET
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- 使用WebClient或HttpWebRequest模拟上传文件和数据
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- C#使用WebRequest(HttpRequest)发送文件
- C# 使用 HttpWebRequest 保持会话上传文件到 HTTP
- 使用WinInet向 ASP.Net Web服务器 多线程上传文件
- ASP.NET中使用HttpWebRequest调用WCF
- C#在WinForm下使用HttpWebRequest上传文件
- [转]C#在WinForm下使用HttpWebRequest上传文件并显示进度
- C#使用HttpWebRequest和HttpWebResponse上传文件示例
- C#在WinForm下使用HttpWebRequest上传文件并显示进度
- 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie
- C# 使用 HttpWebRequest 保持会话上传文件到 HTTP
- C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie