我需要将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>
问题是我需要从用C#编写的Windows应用程序中完成。
如何在同一篇文章中上传文件和字符串?
我正在使用WebClient
课程
我试着打开文件,读取它的字节,然后发布这样的内容:
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
结合起来发布两个值,例如网页(有效)?
答案 0 :(得分:3)
首先,在multipart / form-data标头中执行c.Headers.Add
时会出现拼写错误。 : - )
其次,您需要通过在内容部分之间引入边界来正确格式化帖子。看看here。
答案 1 :(得分:2)
您必须使用边界分隔上传的数据。有关详细信息,请参阅此post。
答案 2 :(得分:0)
这可能会有所帮助,也可能没有帮助,但我注意到了一个错字:
c.Headers.Add("Content-Type", "multipart/form-dat");
应该是
c.Headers.Add("Content-Type", "multipart/form-data");