Spring MVC文件上传下载实践

基于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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值