C#使用HTTPWebRequest或WebClient上传一个文件(多部分/表单数据)

时间:2018-07-19 16:49:04

标签: c# upload httpwebrequest webclient webrequest

我尝试将文件从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进行此操作,但这不起作用:该文件未加载到服务器。 我读了很多其他线程,例如: Link1Link2 还有很多其他方法,但我找不到解决方法。

0 个答案:

没有答案