asp.NetでHttpWebRequestを使用してアップロードファイルを送信
5155 ワード
あるサイトでは、HttpWebRequestまたはWebClientを使用することができる別のサイトにファイルをアップロードする必要があります.しかし、WebClientはまずサーバーにファイルをアップロードしてから送信を実行する必要があります.私のニーズに合わないので、ここでは紹介しません.
HttpWebRequestで送信する原理:HttpWebRequestを構築し、FileUploadでアップロードするファイルを取得し、バイトストリームでこのファイルを送信し、別のサイトがバイトストリームを受信してサーバに保存する.
送信プログラム:
ソースコードの表示
印刷
?
受信プログラム:
ソースコードの表示
印刷
?
ソース:http://blog.bossma.cn/dotnet/asp-net-httpwebrequest-upload-send-file/
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/