关于文件上传
发布时间:2020-12-15 08:02:00 所属栏目:Java 来源:网络整理
导读:1、依赖添加(注入pom.xml中) dependency groupIdcommons-io/groupId artifactIdcommons-io/artifactId version2.4/version /dependency dependency groupIdcommons-fileupload/groupId artifactIdcommons-fileupload/artifactId version1.3/version /depen
1、依赖添加(注入pom.xml中)<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3</version> </dependency> 2、配置文件上传解析器(配置在springMvc中)<!--5、文件上传的解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--5.1 设置文件最大尺寸 5M-->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
3、配置文件存储的位置(在web.Xml中)<!-- 上传文件的存储位置 --> <context-param> <param-name>uploadPath</param-name> <param-value>G:apache-tomcat-8.5.31-windows-x64apache-tomcat-8.5.31webappsfiles</param-value> </context-param> 4、JSP(1)???? 表单enctype为:enctype="multipart/form-data" (2)???? 预览照片 ? ? <div class="form-group"> <label class="col-md-2 control-label" for="example-hf-password" style="margin: 0 0 0 135px;"> </label> <div class="col-md-4"> <img id="img_1" src="<%=basePath%>images/11.jpg" style="box-shadow: 2px 3px 4px black; width: 200px; height: 250px;"> <br> <br> <a href="javascript:;" class="file">选择文件 <input type="file" name="posImgName" id="posImgName" onchange="previewImage(this,‘img_1‘)"> </a> </div> </div> 然后用一个input标签属性设置为file类型导入工具类UploadFileUtils、FileDownload 以下是UploadFileUtils package cn.com.cxsw.ssm.util; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.springframework.web.multipart.MultipartFile; public class UploadFileUtils { public static String uploadFile(HttpServletRequest request,MultipartFile adduserImg) throws Exception { String fileName=""; String path = request.getServletContext().getInitParameter("uploadPath"); String originalFilename = adduserImg.getOriginalFilename(); String substring = originalFilename.substring(originalFilename.indexOf(".")); fileName=UUID.randomUUID().toString().replaceAll("-","")+substring; File targetFile=new File(path+""+fileName); try { adduserImg.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } return fileName; } public static List<String> multiFileUpload(MultipartFile[] multipartFiles,HttpServletRequest request) throws IllegalStateException,IOException{ List<String> fileNameList=new ArrayList<String>(); // 0、获取服务器中文件存储的位置 String pathDir=request.getServletContext().getInitParameter("imgPath"); for(MultipartFile multipartFile:multipartFiles) { // 1、获取原始照片的名称 String oldFileName = multipartFile.getOriginalFilename(); // 2、解析出源文件的扩展名 String extendsName = oldFileName.substring(oldFileName.indexOf(".")); // 3、生成新的文件名称 String newFileName = UUID.randomUUID().toString().replaceAll("-","") + extendsName; // 4、创建目标文件对象 File file = new File(pathDir + newFileName); // 5、写入目标文件 multipartFile.transferTo(file); // 6、存入新文件名 fileNameList.add(newFileName); } return fileNameList; } } FileDownload package cn.com.cxsw.ssm.util; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; public class FileDownload { public static void downloadFile(HttpServletResponse response,String filePath) { // 映射下载文件 File file = new File(filePath); if (file.exists()) { // 设置强制下载不打开 response.setContentType("application/force-download"); // 设置文件名 response.addHeader("Content-Disposition","attachment;fileName=" + file.getName()); byte[] buffer = new byte[1024]; FileInputStream fis = null; BufferedInputStream bis = null; OutputStream os = null; try { fis = new FileInputStream(file); bis = new BufferedInputStream(fis); os = response.getOutputStream(); int i = bis.read(buffer); while (i != -1) { os.write(buffer,0,i); i = bis.read(buffer); } } catch (Exception e) { e.printStackTrace(); } finally { if (bis != null) { try { bis.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null) { try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if (os != null) { try { os.close(); } catch (IOException e) { e.printStackTrace(); } } } } } } web.xml中要设置存储路径: <context-param> <param-name>uploadPath</param-name> <param-value>G:apache-tomcat-8.5.31-windows-x64apache-tomcat-8.5.31webappsmyFiles</param-value> </context-param> 5、controller中,首先用MultipartFile获取数据为jsp中file的name属性,还有http的请求HttpServletRequest request其次在封装的UploadFileUtils类中使用uploadFile方法传入值即可完成@RequestMapping(value = "/posterAdd",method = { RequestMethod.POST,RequestMethod.GET }) public String posterAdd(PosterInfo posterInfo, MultipartFile posImgName,HttpServletRequest request) { String newFileName = ""; try { newFileName = UploadFileUtils.uploadFile(request,posImgName); } catch (Exception e) { e.printStackTrace(); } posterInfo.setPosImg(newFileName); String posIdcard = posterInfo.getPosIdcard(); String psw = posIdcard.substring(11,17); posterInfo.setPosPsw(psw); int res1 = posterInfoServiceImpl.insert(posterInfo); return "poster/poster_add"; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |