1. 程式人生 > >springMVC文件的上傳與下載

springMVC文件的上傳與下載

不存在 ons axu max iou tac array header available

1.文件上傳

springmvc中只需要配置上傳組件,然後配合使用MultipartFile,就可以輕松實現單個文件上傳和批量上傳,而且上傳的文件類型和大小都可以在springmvc 配置文件中配置。

pom文件中增加:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>${fileupload.version}</version>
</
dependency>

springMVC配置文件中增加multipartResolver:

<bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize">
            <value>40000000</value><!-- 文件最大上傳限制 40M以內 -->
        </property
> <property name="maxInMemorySize" value="2048" /> <property name="defaultEncoding"> <value>UTF-8</value> </property> </bean>

上傳代碼:

@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
public Result fileUpload(HttpServletRequest request) {
        Result result 
= new Result(); List<MultipartFile> fileList = getFile(request); return result; } /** * 從request中獲取文件 * @param request * @return */ public static List<MultipartFile> getFile(HttpServletRequest request) { List<MultipartFile> result = null; try { result = new ArrayList<MultipartFile>(); MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request; Map<String, MultipartFile> fileMap = mRequest.getFileMap(); for (Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet().iterator(); it.hasNext();) { Map.Entry<String, MultipartFile> entry = it.next(); MultipartFile mFile = entry.getValue(); String fileSizeLimit = PropertyUtils.getConfig("fileSizeLimit");//獲取配置文件中的文件大小最大限制 if (mFile.getSize() > Long.parseLong(fileSizeLimit)) { String fname = mFile.getOriginalFilename(); throw new Exception(fname + "文件大小超過最大限制"); } result.add(mFile); } } catch (Exception e) { e.printStackTrace(); } return result; }

2.文件下載

基於ResponseEntity實現

@RequestMapping("/testHttpMessageDown")
public ResponseEntity<byte[]> download(HttpServletRequest request) throws IOException {
    File file = new File("E://123.jpg");
    byte[] body = null;
    InputStream is = new FileInputStream(file);
    body = new byte[is.available()];
    is.read(body);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Disposition", "attchement;filename=" + file.getName());
    HttpStatus statusCode = HttpStatus.OK;
    ResponseEntity<byte[]> entity = new ResponseEntity<byte[]>(body, headers, statusCode);
    return entity;
}

Java通用下載實現(這裏用的GET方法方便瀏覽器測試)

@RequestMapping(value = "/fileDownload", method = RequestMethod.GET)
    public Result fileDownload(@RequestParam String filePath, HttpServletRequest request,
        HttpServletResponse response) {
        Result result = new Result();

        File file = new File("E://123.jpg");
        if (!file.exists()) {
            System.Out.println("文件不存在");
            return result;
        }

        try {
            response.reset(); //設置ContentType            
            response.setContentType("application/octet-stream; charset=utf-8");
            String fileName = new String(file.getName().getBytes("utf-8"), "ISO-8859-1"); //處理中文文件名中文亂碼問題
            response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
            IOUtils.copy(new FileInputStream(file), response.getOutputStream());
        }
        catch (Exception e) {
            System.Out.println("文件下載失敗");
            return result;
        }

        return result;
    }

springMVC文件的上傳與下載