asp.NetでHttpWebRequestを使用してアップロードファイルを送信

5155 ワード

あるサイトでは、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/