multipart/form-data提交文件和参数的实现方法
multipart/form-data是一种提交数据的格式,可以用来提交文件和参数,在C#中可以使用HttpWebRequest类来实现这种格式的提交。
需要创建一个HttpWebRequest对象,设置好请求的URL和请求方法,比如:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxx.xxx.xxx/xxx"); request.Method = "POST";
设置ContentType和ContentLength,其中ContentType为multipart/form-data,ContentLength为提交数据的总长度:
request.ContentType = "multipart/form-data"; request.ContentLength = dataLength;
需要构造提交数据,包括文件和参数,构造的规则如下:
- 每个参数或文件以"--"开头,以换行符"\r\n"结尾;
- 每个参数或文件之间以换行符"\r\n"分隔;
- 参数的格式为"Content-Disposition: form-data; name=\"参数名称\"\r\n\r\n参数值";
- 文件的格式为"Content-Disposition: form-data; name=\"文件参数名称\"; filename=\"文件名\"\r\nContent-Type: 文件类型\r\n\r\n文件内容";
- 提交数据的以"--"结尾。
将构造好的提交数据写入到请求流中,并发送请求,请求完成后,就可以得到服务器的响应结果了:
Stream requestStream = request.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); string responseStr = reader.ReadToEnd(); reader.Close(); responseStream.Close(); response.Close();