Spring MVC文件上传下载实践

来源:互联网 发布:mac官网口红价格 编辑:程序博客网 时间:2024/05/16 00:55

基于SpringMVC的文件上传下载,mark一下,废话不多说,直接上代码:
一,环境
这里使用的是maven项目结构,上传文件maven相关依赖如下:

<!-- 上传文件依赖 -->        <dependency>            <groupId>commons-fileupload</groupId>            <artifactId>commons-fileupload</artifactId>            <version>1.2.2</version>        </dependency>        <dependency>            <groupId>commons-io</groupId>            <artifactId>commons-io</artifactId>            <version>1.2</version>        </dependency>

Spring配置:

<mvc:annotation-driven>    <!-- 下载文件配置 -->    <mvc:message-converters>            <bean class="org.springframework.http.converter.StringHttpMessageConverter">                <property name="supportedMediaTypes">                    <list>                        <value>text/plain;charset=UTF-8</value>                        <value>text/html;charset=UTF-8</value>                    </list>                </property>            </bean>        </mvc:message-converters>    </mvc:annotation-driven><!-- 上传文件 -->    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">        <property name="maxUploadSize">            <value>104857600</value>        </property>        <property name="defaultEncoding">            <value>UTF-8</value>        </property>    </bean>

上传文件代码:

@RequestMapping(value = "/uploadFile.do", method = RequestMethod.POST)    public @ResponseBody boolean uploadFile(            @RequestParam(required = false) MultipartFile file){    File f = new File("D://temp//upload//"+file.getOriginalFilename());                    if(!f.getParentFile().exists()){                        f.getParentFile().mkdirs();                    }                    file.transferTo(f);}

上传文件页面

<form action="uploadFile.do" method="post">    <input type="text" size="20" name="fileName" id="fileName"  style="border: 1px solid #ccc;width:20%" />     <input type="button" value="浏览" onclick="path.click()" style="border: 1px solid #ccc;width:7%;"/>     <input type="file" id="file" name="file" style="display: none" onchange="fileName.value=this.value"/>    <input type="submit" value="提交">                        </form>                 

下载文件代码:

@RequestMapping(value = "/downloadFile.do", method = RequestMethod.GET)    public ResponseEntity<byte[]> downloadFile(String fileName) {        try {                String fileName = "D://temp//upload//"+fileName;                File file = new File(fileName);                // 设置字节编码                String dfileName = new String(fileName.getBytes("UTF-8"),                        "iso8859-1");                HttpHeaders headers = new HttpHeaders();                headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);                headers.setContentDispositionFormData("attachment", dfileName);                return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);}               

页面写个链接接跳转到请求就可以了

0 0