时间:2021-05-20
由于工作中 使用MultipartFile 与现有的一些上传文件组件冲突
所以使用其他的接收上传文件的方法.
首先我把MultipartFile 类的配置文件注释掉.
<!-- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="utf-8" /> <property name="maxUploadSize" value="10485760" /> 最多上传10M,初始化了此类,MultipartFile 将会收到文件,而request将不会! </bean> -->然后把原有的文件接收方法,改为此代码,
注释详细,就不多废话了:
/*** 从 request 中获取上传的文件* @warn 后续需要 删除处理文件上传时* 生成的临时文件 ,使用item.delete();* @param request http请求* @param encoding 解码方式,传null默认 utf-8* @return 返回的是一个 FileItem 集合*/public List<FileItem> getUploadInputSteam(HttpServletRequest request,String encoding){ if (encoding==null || "".equals(encoding)) { encoding = "UTF-8"; } List<FileItem> items = new ArrayList<FileItem>(); //初始化需要解析文件的几个类 DiskFileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); upload.setHeaderEncoding(encoding); if (!ServletFileUpload.isMultipartContent(request)) { return items; } try { //使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合 //每一个FileItem对应一个Form表单的输入项 List<FileItem> list = upload.parseRequest(request); for (FileItem item : list) { //如果fileitem中封装的是普通输入项的数据 if (item.isFormField()) {// String name = item.getFieldName();// //解决普通输入项的数据的中文乱码问题// String value = item.getString(encoding);// System.out.println(name +"="+value); }else{ String fileName = item.getName(); if (fileName==null||fileName.trim().equals("")) { continue; } //注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的, //如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt //处理获取到的上传文件的文件名的路径部分,只保留文件名部分// fileName = fileName.substring(fileName.lastIndexOf("\\")+1); items.add(item); } } } catch (Exception e) { e.printStackTrace(); return items; } return items; } @RequestMapping("/testUpload") @ResponseBody public String testUpload(HttpServletRequest request) throws Exception{ //获取文件集合 List<FileItem> items = getUploadInputSteam(request, "utf-8"); //取第一个做实验 FileItem item = items.get(0); //上传的文件名 String fileName = item.getName(); fileName = fileName.substring(fileName.lastIndexOf("\\")+1); //数据流获取,获得数据流你可以自由解析 , 保存 等操作 InputStream in = item.getInputStream(); //关闭流 in.close(); //最后一定要删除,item的临时文件 item.delete(); return "success!";}注意:
1.解析文件的类 都来自org.apache.commons的这个包
2.前端传来一定要写 好表单的,action 的 url ,enctype="multipart/form-data",post请求
3.input 按钮指明 type="file" name="xxx" 然后还有提交按钮(使用ajax异步提交也行)
例如:
<form action="test/testUpload" method="post" enctype="multipart/form-data"> <input type="file" name="myFile" value="选择文件"> <input type="submit" value="提交文件" /></form>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
最近写文件上传到服务器读取的代码,前端使用FormData上传,服务端用MultipartFile接收,自己测试了下MultipartFile对象有什么东西,结
多文件上传就是改良一个方法把MultipartFile类换成CommonsMultipartFile类,因为上传多个文件用数组方式的话MultipartFile
本文实例为大家分享了java实现SFTP上传文件到资源服务器工具类,供大家参考,具体内容如下首先得创建连接sftp服务器的公共类MySftp.java:pack
Java客户端通过HTTP协议上传文件,服务端处理客户端请求,MultipartFile转File,实现客户端上传文件的存储Java环境:JDK1.8开发环境:
本文实例为大家分享了Java实现文件上传服务器和客户端的具体代码,供大家参考,具体内容如下文件上传服务器端:/***使用TCP协议实现上传功能的服务器端*思路: