波斯马BOSSMA Information Technology

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

发布时间:2011年3月3日 / 分类:ASP.NET, DOTNET / 15,542 次浏览 / 评论

一个网站中需要上传一个文件到另一个网站,可以使用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);
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《asp.net中使用HttpWebRequest发送上传文件

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论