如何解决将文件从客户端流传输到webrequest
| 我正在从客户端计算机到远程云主机的c#Web应用程序中上传文件。用户输入文件名和位置,然后将其传递给服务器。我正在将文件内容分块传输到请求。但是,文件到达目的地时无效。我确定它与我的请求标头和垃圾类似,因为从服务器上传到远程位置后,我能够使它工作。任何人都可以发现问题所在吗?while (bytesRemaining > 0)
{
if (!sw.CanRead)
{
sw = File.OpenRead(txtFileUpload.Text);
if (offset > 0)
sw.Seek(offset,SeekOrigin.Begin);
}
int count = sw.Read(buffer,(int) chunk);
request =
(HttpWebRequest)
WebRequest.Create(\"http://xxxxxx.com/write/\" +
offset);
request.Method = \"POST\";
request.ReadWriteTimeout = int.MaxValue;
request.Timeout = int.MaxValue;
request.KeepAlive = false;
string boundary = \"----------------------------\" + DateTime.Now.Ticks.ToString(\"x\");
request.ContentType = \"multipart/form-data; boundary=\" + boundary;
var postData = new MemoryStream();
const string newLine = \"\\r\\n\";
var sw3 = new StreamWriter(postData);
sw3.Write(\"--\" + boundary + newLine);
sw3.Write(\"Content-Disposition: form-data;name=\\\"{0}\\\";filename=\\\"{1}\\\"{2}\",\"upload\",txtFileName.Text,newLine);
sw3.Write(\"Content-Type: multipart/form-data \" + newLine + newLine);
sw3.Flush();
postData.Write(buffer,count);
sw3.Write(newLine);
sw3.Write(\"--{0}--{1}\",boundary,newLine);
sw3.Flush();
request.ContentLength = postData.Length;
using (Stream s = request.GetRequestStream())
postData.WriteTo(s);
sw3.Write(\"--\" + boundary + newLine);
sw3.Write(\"Content-Disposition: form-data;name=\\\"\\\"\" + newLine);
sw3.Write(\"content-type:octet-stream;charset=windows-1250\" + newLine);
sw3.Write(\"VALUE\" + newLine);
sw3.Write(\"--{0}--{1}\",newLine);
sw3.Flush();
postData.Close();
// These next 3 lines are what I had before,instead of all the previous
// code,which worked when uploading a file from the server to the remote
// location.
//using (Stream sw2 = request.GetRequestStream())
//{
// sw2.Write(buffer,count);
//}
using (WebResponse resp = request.GetResponse())
{
resp.Close();
}
offset += count;
bytesRemaining -= count;
}
解决方法
为什么要重新发明轮子?采用
WebClient.UploadFile
http://msdn.microsoft.com/zh-cn/library/system.net.webclient.uploadfile(v=vs.71).aspx
他们甚至有一个例子。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。