我正在使用WebClient.UploadFileAsync
将本地文件上传到网络服务器,我也想在帖子中传递一些参数。我想发送一些字段,告诉PHP代码在服务器特定位置上保存上传文件的位置。
我尝试将字段直接放入网址,例如:
WebClient client = new WebClient();
Uri uri = new Uri("http://example.com/upload.php?field1=test");
client.UploadFileAsync(uri, "POST", "c:\test.jpg");
PHP代码对isset($_REQUEST['field1'])
返回false。
感谢您提出任何建议。
答案 0 :(得分:0)
我将研究使用WebClient的QueryString属性来设置field1的值(以及请求的任何其他QueryString参数)。
NameValueCollection query = new NameValueCollection();
query.Add("field1", "test");
client.QueryString = query;
参考:http://msdn.microsoft.com/en-us/library/system.net.webclient.querystring(v=VS.100).aspx
答案 1 :(得分:0)
WebClient的UploadFile旨在发送一个文件(作为byte [])作为请求的一部分。根据我的理解,UploadFile方法在写完二进制文件后关闭请求流。
在您的场景中,您实际请求有两个部分1.文件为byte [] 2.文件名为字符串。
为此,您必须使用HttpWebRequest或任何其他能够创建请求的高级类。
请参阅帖子http://www.codeproject.com/KB/cs/uploadfileex.aspx?display=Print 做类似的工作
答案 2 :(得分:0)
This article详细介绍了在使用WebClient上传文件时完成字段发布所需的内容。
不幸的是,大多数文件上传方案都是基于HTML格式的,并且可能 除文件数据外还包含表单字段。这是哪里 WebClient持平。在审查了WebClient的源代码之后, 很明显,没有可能重复使用它来执行 文件上传包括其他表单字段。
因此,唯一的选择是创建一个符合的自定义实现 到rfc1867,rfc2388和W3C multipart / form-data规范 将使用其他表单字段和公开文件上载文件 控制cookie和标题。