您的位置:首页 > 理论基础 > 计算机网络

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

2011-03-03 13:03 633 查看
一个网站中需要上传一个文件到另一个网站,可以使用HttpWebRequest或者WebClient。
但是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);
来源:http://blog.bossma.cn/dotnet/asp-net-httpwebrequest-upload-send-file/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐