当前位置: 首页 > news >正文

指示灯具网站建设嘉兴公司制作网站的

指示灯具网站建设,嘉兴公司制作网站的,与国外公司合作网站建设上海公司,网站制作平台建设Spring Boot 中文件上传 一、MultipartFile二、单文件上传案例三、多文件上传案例四、Servlet 规范五、Servlet 规范实现文件上传 上传文件大家用的最多的就是 Apache Commons FileUpload#xff0c;这个库使用非常广泛。Spring Boot3 版本中已经不能使用了。代替它的是 Sprin… Spring Boot 中文件上传 一、MultipartFile二、单文件上传案例三、多文件上传案例四、Servlet 规范五、Servlet 规范实现文件上传 上传文件大家用的最多的就是 Apache Commons FileUpload这个库使用非常广泛。Spring Boot3 版本中已经不能使用了。代替它的是 Spring Boot 中自己实现的文件上传。Spring Boot 上传文件现在变得非常简单。提供了封装好的处理上传文件的接口 MultipartReslover用于解析上传文件的请求它的内部实现类 StandardServletMultipartResolver。之前常用的 CommonsMultipartResolver 不能使用了。 CommonsMultipartResolver 是使用 Apache Commons File Upload 库时的处理类。 一、MultipartFile StandardServletMultipartResolver 内部封装了读取 POST 请求的请求体中的数据也就是文件内容。我们只需要在 Controller 的方法中加入形参 ReqestParam(“参数名”) MultipartFile file。MultipartFile 表示上传的文件其提供了方便的方法保存文件到磁盘。public interface MultipartFile extends InputStreamSource {String getName();//返回参数的名称NullableString getOriginalFilename();//获取上传文件的名称NullableString getContentType();//返回文件的内容类型boolean isEmpty();//判断是否为空或者上传的文件是否有内容long getSize();//返回文件大小 以字节为单位byte[] getBytes() throws IOException;//将文件内容转化成一个byte[] 返回InputStream getInputStream() throws IOException;//返回InputStream读取文件的内容default Resource getResource() {return new MultipartFileResource(this);}//保存上传文件到目标Dest中void transferTo(File dest) throws IOException, IllegalStateException;default void transferTo(Path dest) throws IOException, IllegalStateException {FileCopyUtils.copy(this.getInputStream(), Files.newOutputStream(dest));} }二、单文件上传案例 创建两个静态页面一个用来上传文件使用表单的方式另一个用来显示文件上传成功。注意静态资源放在 static 目录下否则访问不到资源 使用表单的方式上传文件必须满足的三个要求 ① enctype“multipart/form-data”② method“post”③ input type“file” value“选择文件” name“uploadFile” !-- 文件名uploadfile.html -- !DOCTYPE html html langen headmeta charsetUTF-8title上传文件/title /head bodyh3上传文件/h3div/divform actionuploadFile enctypemultipart/form-data methodpost选择需要上传的文件input typefile value选择文件 nameuploadFile brinput typesubmit value上传文件/form /body /html!-- 文件名upload_success.html -- !DOCTYPE html html langen headmeta charsetUTF-8title文件上传成功/title /head bodyh3文件上传成功/h3 /body /html编写controller方法获取请求然后保存文件。Controller public class UploadFileController {PostMapping(/uploadFile)public String uploadFile(RequestParam(uploadFile) MultipartFile multipartFile) throws IOException {//首先判断上传的文件是否为空if (!multipartFile.isEmpty()) {String suffix .unknown;//初始文件后缀为不知道String name multipartFile.getOriginalFilename();//获取上传的文件名System.out.println(name);//获取文件的后缀if (name ! null name.indexOf(.) 0) {suffix name.substring(name.indexOf(.));}String dest UUID.randomUUID() suffix;//生成保存的文件名multipartFile.transferTo(new File(G:/files/ dest));//保存文件到指定位置}//防止刷新重复上传return redirect:/upload_success.html;} }编写错误页面 在 SpringBoot 中 /static/error/5xx.html 文件 如果出现 5xx 的错误自动跳转到整个页面。在 SpringBoot 中 /static/error/4xx.html 文件 如果出现 4xx 的错误自动跳转到整个页面 。 !-- 文件名5xx.html -- !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body h3出现了 5XX 错误/h3 /body /html!-- 文件名4xx.html -- !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body h3出现了 4XX 错误/h3 /body /html设置上传文件的大小 Spring Boot 默认单个文件最大支持1M一次请求最大10M。改变默认值需要修改 application.yml 配置文件。file-size-threshold 超过指定大小直接写文件到磁盘不在内存处理。 不能只考虑SpingBoot每次请求的文件最大大小还需要设置服务器每次请求的大小。 三、多文件上传案例 多文件上传在接收文件参数部分有所改变 MultipartFile[] files。循环遍历数组解析每一个上传的文件。前端通过 form 表单上传多文件。!DOCTYPE html html langen headmeta charsetUTF-8title上传文件/title /head bodyh3上传文件/h3div/divform actionuploadFile enctypemultipart/form-data methodpost选择需要上传的文件 1input typefile value选择文件 nameuploadFile br选择需要上传的文件 2input typefile value选择文件 nameuploadFile br选择需要上传的文件 3input typefile value选择文件 nameuploadFile brinput typesubmit value上传文件/form /body /html四、Servlet 规范 Servlet3.0 规范中定义了 Jakarta.servlet.http.Part 接口处理 mulitipart/form-data POST 请求中接收到的表单数据。有了 Part 对象其 write() 方法将上传文件保存到服务器本地的磁盘中。 在 HttpServletRequest 接口中引入的新方法 getParts()返回 Part 对象的集合。getPart(字符串名称)检索具有给定名称的单个 Part 对象。 Spring Boot3 使用的 Servlet 规范是基于 5 的所以上传文件使用的就是 Part 接口。 StandardServletMultipartResolver 对 Part 接口进行的封装实现基于 Servlet 规范的文件上传。 public interface Part {InputStream getInputStream() throws IOException;//获取输入流用于检索文件的内容String getContentType();//获取文件内容类型String getName();//获取file控件的name属性String getSubmittedFileName();//获取上传文件名Servlet3.1 Tomcat8.0实现long getSize();//获取上传文件的大小void write(String fileName) throws IOException; //将文件内容写入指定的磁盘位置void delete() throws IOException;//删除Part数据和临时目录数据,默认会删除String getHeader(String name);//获取指定请求头CollectionString getHeaders(String name);//获取指定header名称的集合数据CollectionString getHeaderNames();//获取所有请求头的名称 }五、Servlet 规范实现文件上传 PostMapping(/files)public String upload(HttpServletRequest request){try {for (Part part : request.getParts()) {String fileName extractFileName(part);part.write(fileName);}} catch (IOException | ServletException e) {throw new RuntimeException(e);}return redirect:/upload_success.html;}private String extractFileName(Part part) {String contentDis part.getHeader(content-disposition);String[] items contentDis.split(;);for (String s : items) {if (s.trim().startsWith(filename)) {return s.substring(s.indexOf() 2, s.length()-1);}}return ;}上传文件包含 header 头 content-disposition类似如下的内容可获取文件原始名称。 form-data; name“dataFile”;filename“header.png” application.yal 文件可配置服务器存储文件位置例如 spring.servlet.multipart.locationG:/files/
http://www.w-s-a.com/news/589918/

相关文章:

  • 怎么利用代码做网站重庆网络营销网站建设销售
  • 用dw怎么做网站留言板百度举报网站
  • 成都微网站设计企业为什么要做网络营销推广
  • 双桥区网站制作企业网站一般内容包括哪些
  • 莆田外贸专业建站做app 需要先做网站吗
  • 网站怎么用北京口碑最好的装修公司
  • 潮州网站建设深圳微信分销网站设计
  • asp.net网站开发实例教程pdf泉州seo网站关键词优推广
  • 怎样建立一个企业网站dede 网站名称
  • 做网上竞彩网站合法吗免费网站建设品牌
  • 网站开发所需要的的环境客户关系管理的内涵
  • 优质做网站公司做软件的人叫什么
  • 徐州市徐州市城乡建设局网站首页网站建设刂金手指下拉十五
  • 建设游戏网站目的及其定位市场营销策略概念
  • 小学电教检查网站建设资料wordpress谷歌字体
  • 南通做网站的公司有哪些中国建筑论坛网
  • 技术支持 佛山网站建设wordpress不用ftp
  • 广州定制app开发wordpress配置搜索引擎优化
  • 兰州网站建设论坛四川建设网官网登录
  • 在线作图免费网站湖南批量出品机
  • 深圳做网站公司有哪些地方妇联加强网站平台建设
  • vps建设网站别人访问不了网页链接生成器
  • 网站建设一般要多少钱电商平台取名字大全
  • 怎么做网站封面上的图网站开发语言 微信接口
  • 免费观看网站建设优化安徽
  • 上海电商网站开发公司做婚恋网站的翻译好吗
  • 以网站建设为开题报告大数据技术就业前景
  • dw做网站字体 别人电脑显示青岛活动策划公司
  • 网站成立时间查询墨猴seo排名公司
  • 技术支持 随州网站建设苏州企业网站建设定制