Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在同一帖子中上传数据和文件?_C#_File Upload_Webclient - Fatal编程技术网

C# 如何在同一帖子中上传数据和文件?

C# 如何在同一帖子中上传数据和文件?,c#,file-upload,webclient,C#,File Upload,Webclient,我需要上传一个pdf文件和一个电话号码到一个服务,将发送传真 有效的表单(来自网页)如下所示: <form action="send.php" method="post" enctype="multipart/form-data"> <input type="file" name="pdf" id="pdf" /> <input type="text" name="phonenumber" id="phonenumber" />

我需要上传一个pdf文件和一个电话号码到一个服务,将发送传真

有效的表单(来自网页)如下所示:

<form action="send.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="pdf" id="pdf" /> 
    <input type="text" name="phonenumber" id="phonenumber" /> 
    <input type="submit" name="Submit" /> 
</form> 
string content = "phonenumber="+request.PhoneNumber+"&pdf=";

WebClient c = new WebClient();
c.Headers.Add("Content-Type", "multipart/form-data");
c.Headers.Add("Cache-Control", "no-cache");
c.Headers.Add("Pragma", "no-cache");

byte[] bret = null;
byte[] p1 = Encoding.ASCII.GetBytes(content);
byte[] p2 = null;
using (StreamReader sr = new StreamReader(request.PdfPath))
{
    using (BinaryReader br = new BinaryReader(sr.BaseStream))
    {
        p2 = br.ReadBytes((int)sr.BaseStream.Length);
    }
}

byte[] all = new byte[p1.Length + p2.Length];
Array.Copy(p1, 0, all, 0, p1.Length);
Array.Copy(p2, 0, all, p1.Length, p2.Length);

bret = c.UploadData(url, "POST", all);
这是行不通的

我没有服务器日志或类似的东西来帮助我调试它


我是否缺少
WebClient
类中的一些简单内容?是否有其他方法可以将
UploadFile
UploadData
组合在一起,像网页一样发布这两个值?

您必须使用边界来分离上传的数据。有关详细信息,请参见此部分。

您必须使用边界分隔上传的数据。有关详细信息,请参见此。

首先,您在执行
c.Headers时有一个输入错误。请在多部分/表单数据头中添加
。:-)


其次,您需要通过在内容部分之间引入边界来正确设置帖子的格式。看一看。

首先,您在执行
c.Headers时有一个输入错误。请在多部分/表单数据头中添加
。:-)


其次,您需要通过在内容部分之间引入边界来正确设置帖子的格式。看一看。

这可能有帮助,也可能没有帮助,但我注意到一个打字错误:

c.Headers.Add("Content-Type", "multipart/form-dat");
应该是

c.Headers.Add("Content-Type", "multipart/form-data");

这可能有帮助,也可能没有帮助,但我注意到一个输入错误:

c.Headers.Add("Content-Type", "multipart/form-dat");
应该是

c.Headers.Add("Content-Type", "multipart/form-data");

修正了打字错误,只是在帖子里,不是在代码里--现在看边界…修正了打字错误,只是在帖子里,不是在代码里--现在看边界。。。