使用下面的方法就可以在上传文件的同时附带请求参数传递。方法内的部分请求参数可能需要修改。

 /// <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; // =0while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0){memStream.Write(buffer, 0, bytesRead);}// 写入字符串的Keyvar 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.Keysselect string.Format(stringKeyHeader, key, stringDict[key])into formitemselect 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;}

C#文件上传同时附带参数上传相关推荐

  1. datagrid传参_DataGrid里面要传两个参数怎么传

    DataGrid里面要传两个参数怎么传? peasant0001 (hh)     2003-11-13 00:42:54 在 .NET技术 / ASP.NET 提问 一个DataGrid里面有ID, ...

  2. mysql batis传多个参数_Mybatis传多个参数(三种解决方案)

    据我目前接触到的传多个参数的方案有三种. 第一种方案 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml ...

  3. .NET WebAPI 实现图片上传(包括附带参数上传图片)

    博主的项目,客户端是APP,考虑到以后也可能会应用到微信端.网站等,图片上传方法就需要兼容多端,并且以目前的设计,不允许非登录用户上传图片,就得在上传时解决附带参数上传图片的问题. 先来看看后台方法( ...

  4. 函数使用(函数定义及调用方式、传参与返回参数、命名空间、装饰器)

    函数定义及调用方式 一. 定义函数 1. 自定义函数的规则 • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ().     • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以 ...

  5. Element UI 上传组件实现文件上传并附带额外参数

    1. 需求 在使用 ElementUI 的上传组件 el-upload 实现文件上传功能时,如果单文件上传是比较简单的,但是在实际需求中,往往会在上传文件时伴随着一些其他参数,效果如下图: 在上传指定 ...

  6. iview upload爬坑 之手动上传以及动态修改附带参数 附后台接受测试代码

    今天用iview 的upload 上传文件,除文件外还想传其他参数,所以需要手动控制upload 上传,看了官网手动上传例子,发现起并没有真正上传,只是延迟时间给看了看效果,官网例子如下 不想吐槽这官 ...

  7. bootstrap_fileinput上传文件 后台接受额外的参数

    如果是你,你会怎样做 我们何尝不是茫茫人海中的一员,迷茫着,追求着 天天敲着java代码能怎样,明天如何 不要问明天会怎样,明天怎样都是你今天和明天的选择 好啦,不扯了,大家如果想听我扯,可以访问我的 ...

  8. html文件上传添加额外参数,bootstrap-fileinput组件在上传时传递额外参数

    解决方法 关键的配置参数是uploadExtraData 具体的代码如下: //获得额外参数的方法 fodderType = function() { return $("#fodderTy ...

  9. element-ui upload 上传组件附带额外参数进行上传(表单形式,多个参数)

    之前一直使用upload组件单个上传文件,最近遇到需要上传表单字段,表单中有多个参数 下图是接口要求: 官网上传组件中提供了响应的功能实现,但是demo中未演示,不注意看文档参数的话,可能会不知道这个 ...

最新文章

  1. OpenStack 关于admin-openrc.sh的作用(Queens版本)
  2. 编译小米android系统软件,为Android加入busybox工具之小米(开发版本)
  3. Java泛型之泛型参数
  4. scala学习笔记-基础语法(1)
  5. 批量修改TS Profile、盘符计算器小工具
  6. video downloadhelper 无时间限制_如何避免背景音乐侵权?自媒体和vlog必备的七大无版权背景音乐网...
  7. Android SharedPreferences
  8. 微信小程序学习笔记4
  9. OJ常用术语解释。AC、WA、TLE、CE、RE、MLE、PE等状态术语的解释
  10. springboot集成kettle, 访问不到ktr文件
  11. 用Python输出自幂数
  12. DLL注入与隐藏的学习
  13. CoreData Model
  14. 关于浏览器极速模式怎么设置
  15. 字符串匹配/模糊匹配(查找/模糊查找)的算法
  16. yum配置文件 重启后还原_电脑里重启后,重启前所有设置都还原到以前了,怎么办啊...
  17. 计算机专业黑话,互联网行业黑话大全
  18. 艾伟_转载:如何开发绚丽、高效率的界面(Windows嵌入式系统)
  19. Mybatis(黑马程序员)
  20. 假设将15个MSA连入超级高铁网络,如何用最少的轨道连接所有MSA?

热门文章

  1. 动手做一个简单的智能小车
  2. 和小北聊聊高速PCB设计时板材选择规则有哪些呢?
  3. 基于jQuery经典扫雷游戏源码
  4. 餐饮智能软件设计和实现
  5. 让文章吸引别人,更吸引自己!
  6. scp:windows与linux之间copy文件(类似于linux的scp工具)
  7. 关于视觉小说的词法分析技术-完善篇
  8. [BZOJ1614][Usaco2007 Jan]Telephone Lines架设电话线
  9. zutuanxue.com-linux磁盘管理基本管理
  10. 调试路由器----恢复出厂设置、修改特权密码、备份配置文件、升级操作系统