上代码:

客户端代码

public static string Upload(string url, string fileName)
{HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);request.Method = "POST";Stream postStream = new MemoryStream();#region 处理Form表单文件上传//通过表单上传文件string boundary = "----" + DateTime.Now.Ticks.ToString("x");string formdataTemplate = "\r\n--" + boundary + "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"\r\nContent-Type: application/octet-stream\r\n\r\n";try{//准备文件流using (var fileStream = FileToStream(fileName)){var formdata = string.Format(formdataTemplate, "", System.IO.Path.GetFileName(fileName) /*Path.GetFileName(fileName)*/);var formdataBytes = Encoding.UTF8.GetBytes(postStream.Length == 0 ? formdata.Substring(2, formdata.Length - 2) : formdata);//第一行不需要换行postStream.Write(formdataBytes, 0, formdataBytes.Length);//写入文件byte[] buffer = new byte[1024];int bytesRead = 0;while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0){postStream.Write(buffer, 0, bytesRead);}}}catch (Exception ex){throw ex;}//结尾var footer = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");postStream.Write(footer, 0, footer.Length);request.ContentType = string.Format("multipart/form-data; boundary={0}", boundary);#endregionrequest.ContentLength = postStream != null ? postStream.Length : 0;request.Accept = "*/*";//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";request.KeepAlive = true;request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36";#region 输入二进制流if (postStream != null){postStream.Position = 0;//直接写入流Stream requestStream = request.GetRequestStream();byte[] buffer = new byte[1024];int bytesRead = 0;while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0){requestStream.Write(buffer, 0, bytesRead);}postStream.Close();//关闭文件访问}#endregionHttpWebResponse response = (HttpWebResponse)request.GetResponse();using (Stream responseStream = response.GetResponseStream()){using (StreamReader myStreamReader = new StreamReader(responseStream,Encoding.GetEncoding("utf-8"))){string retString = myStreamReader.ReadToEnd();return retString;}}
}

FileToStream方法,文件转stream

public static Stream FileToStream(string fileName){// 打开文件FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);// 读取文件的 byte[]byte[] bytes = new byte[fileStream.Length];fileStream.Read(bytes, 0, bytes.Length);fileStream.Close();// 把 byte[] 转换成 StreamStream stream = new MemoryStream(bytes);return stream;}

服务端代码:

public string Upload_File()
{try{HttpFileCollection file_list = HttpContext.Current.Request.Files;if (file_list != null && file_list.Count > 0){string str = string.Empty;for (int i = 0; i < file_list.Count; i++){HttpPostedFile file = file_list[i];string type = file.ContentType;//获取文件类型string FileName = file.FileName;string guid = "";if (FileName != null && FileName != ""){string FileType = FileName.Substring(FileName.LastIndexOf(".") + 1);//得到文件的后缀名guid = DateTime.Now.ToString("yyyyMMddhhmmss") + FileName;//得到重命名的文件名//定义文件存放的目标路径string targetDir = HttpContext.Current.Server.MapPath("~/UpLoad/" + DateTime.Now.ToString("yyyy-MM-dd") + "/file");//创建目标路径Directory.CreateDirectory(targetDir);string path = Path.Combine(targetDir, Path.GetFileName(guid));file.SaveAs(path);str = str + "/UpLoad/" + DateTime.Now.ToString("yyyy-MM-dd") + "/file/" + guid;}}return "上传成功," + str;}elsereturn "文件不存在";}catch(Exception ex){return "上传失败," + ex.Message;}
}

C#Post文件上传相关推荐

  1. springboot设置文件上传大小(tomcat默认1M)

    application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...

  2. 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录

    将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...

  3. Springboot 多文件上传

    其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...

  4. django文件上传

    Django在处理文件上传时,文件数据被打包封装在request.FILES中. 一.简单上传 首先,写一个form模型,它必须包含一个FileField: # forms.py from djang ...

  5. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

  6. 模拟文件上传(一):手动文件上传

    关于上传文件,首先我的第一个案例是一个文本文件的上传,简单容易上手! 首先我们上传文件肯定就属于实体内容部分了:所以不能过GET方式请求了,要通过POST方式请求: 因为: 1.get方式是URL传值 ...

  7. Java中的文件上传2(Commons FileUpload:commons-fileupload.jar)

    相比上一篇使用Servlet原始去实现的文件上传(http://www.cnblogs.com/EasonJim/p/6554669.html),使用组件去实现相对来说功能更多,省去了很多需要配置和处 ...

  8. 转 [JAVA] 使用 common-fileupload 实现文件上传

    就在前段时间,还在苦于找到不到合适的上传组件,虽然很早就知道了 common-fileupload,但当时却因为没有找到如何获取表单参数的方法而使用 jspSmartUpload,历尽艰辛终于找到了它 ...

  9. 三层架构中ajax,基于mvc三层架构和ajax技术实现最简单的文件上传

    前台页面提交文件 文件操作 上传文件 //上传文件 function upFile() { var file = document.getElementById("UpFile") ...

  10. 上传图片被防火墙拦截_Web安全:文件上传漏洞

    文章来源:计算机与网络安全 一般将文件上传归类为直接文件上传与间接文件上传.直接文件上传就是服务器根本没有做任何安全过滤,导致攻击者可以直接上传小马文件及大马文件(如ASP.ASPX.PHP.JSP及 ...

最新文章

  1. [LeetCode]113.Path Sum II
  2. mysqldump重叠备份带来的锁表问题
  3. win7查看 本地计算机策略,win7系统本地组策略编辑器打不开怎么办
  4. ASP脚本语言之vbscript用法
  5. Helm 3 完整教程(二十四):创建和使用子 chart
  6. android获取周围AP信息(上)
  7. 判断粗大误差的matlab程序,粗大误差处理程序
  8. Unity3D零基础视频教程下载(全套+视频)
  9. 基于ZStack3.0.1(CC2530)和ST7735S的HAL_LCD驱动替换(一)
  10. Windows10家庭版 VMWare15 安装虚拟机启动时出现 蓝屏(而且重启)问题
  11. vue从服务器获取csv文件,前端 VUE 解析 CSV 文件
  12. LeetCode714_买卖股票的最佳时机含手续费
  13. 软件测评师之申请补贴(六)
  14. Java实现Mysql数据库备份与还原(Linux 和Windows 包含单张表备份)
  15. 知乎、百度会被ChatGPT取代吗?百度文心一言胜算如何
  16. html如何换成word,html怎么换成Word文档
  17. IT系统、TN系统、TT系统接地异同及适用范围
  18. MTK平台Android12编译(包括modem)_个人笔记
  19. 搭建关卡修、向管卡放置物体、改天空颜色
  20. win10鼎信诺为什么安装不了_2016年鼎信诺常见问题处理.docx

热门文章

  1. java B2B2C 源码 多级分销Springcloud多租户电子商城系统- 整合企业架构的技术点(二)...
  2. jQuery取值的一些奇奇怪怪的操作
  3. 模块化的 Windows 7
  4. saltstack之(十二)配置管理mount
  5. 删除 shiro url 上的JSESSIONID
  6. Hibernate,get,load,find方法解析
  7. 【SQL Server数据迁移】链接服务器、分布式查询
  8. Docker安装Tomcat、MySQL和Redis
  9. Guava学习笔记:缘起
  10. 某小公司:MySQL连环问