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
- Spring MVC 文件上传下载
- spring mvc 文件上传下载
- Spring MVC 文件上传下载
- Spring MVC-文件上传下载
- Spring MVC 文件上传下载
- spring mvc文件上传下载
- Spring MVC 文件上传下载
- Spring MVC 文件上传下载
- Spring MVC 文件上传下载
- Spring MVC 文件的上传下载
- Spring mvc实现文件上传下载
- Spring MVC实现文件上传下载
- Spring MVC实现文件上传下载
- Spring MVC的文件上传下载
- Spring MVC文件上传下载实践
- 面试:----Spring MVC 文件上传下载
- Spring MVC 文件上传下载 方法二
- Spring MVC+ajaxfileupload实现文件上传下载
- Matlab中处理XML文件
- SQL Server破坏日志备份链之后,可以通过全备,但是也可以通过差异备份来恢复日志链
- Intent的属性
- iOS 获取时间
- Java log4j的使用实例
- Spring MVC-文件上传下载
- phoneGap学习笔记——android+phoneGap环境搭建
- UDP套接字编程
- 旅途随笔
- ps 透明背景的图片
- Android中常用的工具类01
- [Java聊天室服务器]实战之三 接收循环
- 第一个hiberbate的改进
- 【原创】Ubuntu下vim配置