C#文件上传同时附带参数上传
来源:互联网 发布:r语言网络爬虫 编辑:程序博客网 时间:2024/05/16 06:45
使用下面的方法就可以在上传文件的同时附带请求参数传递。方法内的部分请求参数可能需要修改。
/// <summary> /// 文件上传 /// </summary> /// <param name="filePath">文件路径</param> /// <param name="stringDict">其他参数键值集合</param> /// <returns>响应数据</returns> public static string HttpPostData(string filePath, NameValueCollection stringDict) { string url = @"http://" + ip + ":" + port + "/" + api + "/fileUpload";///拼接你的文件上传接口路径 string responseContent; var memStream = new MemoryStream(); var webRequest = (HttpWebRequest)WebRequest.Create(url); // 边界符 var boundary = "---------------" + DateTime.Now.Ticks.ToString("x"); // 边界符 var beginBoundary = Encoding.ASCII.GetBytes("--" + boundary + "\r\n"); var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); // 最后的结束符 var endBoundary = Encoding.ASCII.GetBytes("--" + boundary + "--\r\n"); // 设置属性 webRequest.Method = "POST"; webRequest.Timeout = 600000; webRequest.ContentType = "multipart/form-data; boundary=" + boundary; // 写入文件 filename可能需要根据你的接口接收参数名称修改 const string filePartHeader = "Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\n" + "Content-Type: application/octet-stream\r\n\r\n"; //var header = string.Format(filePartHeader, fileKeyName, filePath); var header = string.Format(filePartHeader, "file", filePath); var headerbytes = Encoding.UTF8.GetBytes(header); memStream.Write(beginBoundary, 0, beginBoundary.Length); memStream.Write(headerbytes, 0, headerbytes.Length); var buffer = new byte[1024]; int bytesRead; // =0 while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { memStream.Write(buffer, 0, bytesRead); } // 写入字符串的Key var stringKeyHeader = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"" + "\r\n\r\n{1}\r\n"; foreach (byte[] formitembytes in from string key in stringDict.Keys select string.Format(stringKeyHeader, key, stringDict[key]) into formitem select Encoding.UTF8.GetBytes(formitem)) { memStream.Write(formitembytes, 0, formitembytes.Length); } // 写入最后的结束边界符 memStream.Write(endBoundary, 0, endBoundary.Length); webRequest.ContentLength = memStream.Length; var requestStream = webRequest.GetRequestStream(); memStream.Position = 0; var tempBuffer = new byte[memStream.Length]; memStream.Read(tempBuffer, 0, tempBuffer.Length); memStream.Close(); requestStream.Write(tempBuffer, 0, tempBuffer.Length); requestStream.Close(); var httpWebResponse = (HttpWebResponse)webRequest.GetResponse(); using (var httpStreamReader = new StreamReader(httpWebResponse.GetResponseStream(), Encoding.GetEncoding("utf-8"))) { responseContent = httpStreamReader.ReadToEnd(); } fileStream.Close(); httpWebResponse.Close(); webRequest.Abort(); return responseContent; }
阅读全文
0 0
- C#文件上传同时附带参数上传
- c#同时上传文件和参数
- Okhttp3上传参数、文件和同时上传
- Android http附带参数的文件上传
- android OkHttp 上传文件附带参数
- c#使用HttpWebRequest上传文件同时携带其他参数
- C# 多文件同时上传
- 图片上传同时上传参数及servlet文件上传
- FileUpload上传文件同时将文件保存到指定文件夹(附带判断上传文件大小)
- springMVC 上传文件同时传递参数
- C#多文件同时上传源代码
- 关于用jspSmartUpload控件上传文件并附带参数
- Golang+Android文件上传(多文件上传、附带请求参数)
- 用jspSmartUpload上传文件同时获得参数的方法。
- httpclient上传文件,同时带字符串参数 中文乱码问题
- Android中利用volley同时上传文件和文本参数
- android使用HttpURLConnection上传文件同时提交参数
- Retrofit 文件(图片)和参数同时上传的方法
- 文本框的提示内容的显示和消失
- 农历闰年闰月表
- vue学习之路 一 (初期搭建vue项目)
- Fragment通讯
- ORACLE 中ROWNUM用法总结! (转)
- C#文件上传同时附带参数上传
- Cargo-maven2-plugin插件自动部署
- 开发环境、生产环境、测试环境的基本理解和区别
- Angularjs Filter
- log4j简单配置总结
- sql语句的执行顺序和别名问题
- LINUX 学习
- Java工具类--List<T>带出excel
- 对话美团 CEO 王兴:太多人关注边界,而不关注核心