Spring MVC-文件上传下载

来源:互联网 发布:网络机顶盒app软件排行 编辑:程序博客网 时间:2024/06/04 18:31

1.文件上传类

package com.cubead.demo.utils;import java.io.File;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServletRequest;import org.springframework.web.multipart.MultipartFile;public class FileUploadUtils {// 默认大小50Mpublic static final long DEFAULT_MAX_SIZE = 52428800;// 默认上传的地址public static String defaultBaseDir = "upload";public static final String upload(HttpServletRequest request, MultipartFile file) throws Exception {String filename = extractFilename(file, defaultBaseDir);File desc = getAbsoluteFile(extractUploadDir(request), filename);file.transferTo(desc);return filename;}private static final File getAbsoluteFile(String uploadDir, String filename) throws IOException {if (uploadDir.endsWith("/")) {uploadDir = uploadDir.substring(0, uploadDir.length() - 1);}if (filename.startsWith("/")) {filename = filename.substring(0, uploadDir.length() - 1);}File desc = new File(uploadDir + "/" + filename);if (!desc.getParentFile().exists()) {desc.getParentFile().mkdirs();}if (!desc.exists()) {desc.createNewFile();}return desc;}public static final String extractFilename(MultipartFile file, String baseDir) throws UnsupportedEncodingException {String filename = file.getOriginalFilename();int slashIndex = filename.indexOf("/");if (slashIndex >= 0) {filename = filename.substring(slashIndex + 1);}filename = baseDir + "/" + filename;return filename;}public static final String extractUploadDir(HttpServletRequest request) {return request.getSession().getServletContext().getRealPath("/");}}

2.controller类

package com.cubead.demo.controller;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import com.cubead.demo.utils.FileUploadUtils;@Controller@RequestMapping(value = "/fileope")public class FileUploadController {@RequestMapping(value = "upload",method = RequestMethod.POST)public ModelAndView upload(HttpServletRequest request,@RequestParam(value = "myFile", required = false) MultipartFile[] files) {try {for (int i = 0; i < files.length; i++) {FileUploadUtils.upload(request, files[i]);}} catch (Exception e) {e.printStackTrace();}return new ModelAndView("success");}}

3.jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><form action="/spring-mvc/fileope/upload" method="post" enctype="multipart/form-data">file1:<input type="file" name="myFile"/><br>file2:<input type="file" name="myFile"/><br><input type="submit" value="上传"></form>
4.配置文件

<!-- 文件上传下载 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="104857600"/></bean>

上传结束


5.文件下载

package com.cubead.demo.controller;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import com.cubead.demo.utils.FileUploadUtils;@Controller@RequestMapping(value="/fileope")public class FileDownLoadController {@RequestMapping(value = "download", method = RequestMethod.GET)public void download(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "filename",required=true) String fileName) throws Exception {response.setContentType("text/html;charset=UTF-8");request.setCharacterEncoding("UTF-8");BufferedInputStream bis = null;BufferedOutputStream bos = null;String newFileName = new String(fileName.getBytes("ISO8859-1"), "UTF-8");String ctxPath = request.getSession().getServletContext().getRealPath("/") + FileUploadUtils.defaultBaseDir;String downLoadPath = ctxPath + "/" + newFileName;long fileLength = new File(downLoadPath).length();response.setHeader("Content-disposition", "attachment; filename="+ new String(newFileName.getBytes("gb2312"), "ISO8859-1"));response.setHeader("Content-Length", String.valueOf(fileLength));bis = new BufferedInputStream(new FileInputStream(downLoadPath));bos = new BufferedOutputStream(response.getOutputStream());byte[] buff = new byte[2048];int bytesRead;while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {bos.write(buff, 0, bytesRead);}bis.close();bos.close();}}

6.测试页面
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">file1:<a href="/spring-mvc/fileope/download?filename=web.xml">web.xml</a><br>

0 0
原创粉丝点击