我尝试将文件从C#上传到服务器,但是无法正常工作。我写了以下代码:
string adress2send = "http://ip_adress"
byte[] buff = null;
FileStream fs = new FileStream(file2upload,FileMode.Open,FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(file2upload).Length;
buff = br.ReadBytes((int)numBytes);
byte[] file = buff;
string contentType = "application/octet-stream";
string boundary = "------------------------" + DateTime.Now.Ticks.ToString("x");
using (WebClient wc = new WebClient())
{
wc.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary);
var fileData = wc.Encoding.GetString(file);
var package = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n{3}\r\n--{0}--\r\n", boundary, adress2send, contentType, fileData);
var nfile = wc.Encoding.GetBytes(package);
byte[] resp = wc.UploadData(adress2send, "POST", nfile);
}
原则上是可行的。该文件已正确加载到服务器,服务器已在使用它。但我在以下位置收到错误消息:
byte[] resp = wc.UploadData(adress2send, "POST", nfile)
:
System.Net.WebException:“ Der Server帽子Protokollverletzungausgeführt.. Section = ResponseStatusLine”
我认为发生这种情况是因为我等待回应,但没有回应? 有没有一种方法可以发送数据而不等待响应?还是这是服务器错误还是代码错误? 有替代方法吗?
我尝试使用WebRequest进行此操作,但这不起作用:该文件未加载到服务器。 我读了很多其他线程,例如: Link1, Link2 还有很多其他方法,但我找不到解决方法。