基于spring的文件上传下载

package com.zsf.util;

import org.apache.commons.io.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

public class FileLoadUtil{

    /**
     * 图片上传
     * @param request
     * @param file
     */
    public static String upload(HttpServletRequest request, MultipartFile file){

        //重新定义文件名防止重名被替换
        String fileName = UUIDUtil.createUUID();
        //获取文件上传的路径
        String path = request.getServletContext().getRealPath("/images");

        //如果上传目录不存在,则创建出来
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdir();
        }
        //获取上传的文件名(也可以自定义)
        //String fileName = file.getOriginalFilename();
        //构建一个完整文件信息(路径 + 文件名)
        File fileMessage = new File(dir.getAbsolutePath() + "/" + fileName);
        try {
            //执行上传,只需要调用transferTo方法即可
            file.transferTo(fileMessage);
            //将文件名放入model中
//            model.addAttribute("fileName", fileName);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("上传图片失败");
        }
        return fileName;
    }

    /**
     * 图片下载
     * @param fileName
     * @param request
     * @return
     */
    public static ResponseEntity<byte[]> downLoad(String fileName,HttpServletRequest request){
        //获取下载路径
        String path = request.getServletContext().getRealPath("/images");
        //构建下载文件
        File file = new File(path + "/" + fileName);
        //创建HttpHeaders设置响应头信息
        HttpHeaders headers = new HttpHeaders();
        try {
            //设置在响应头中的文件名称,这里进行重新编码,防止中文乱码
            String headerFileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
            //设置内容以附件的方式下载
            headers.setContentDispositionFormData("attachment", headerFileName);
            //设置相应类型为application/octet-stream
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            //创建ResponseEntity对象
            ResponseEntity<byte[]> entity = new ResponseEntity<>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
            return entity;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("文件下载失败");
        }
    }
}

fileLoad

原文地址:https://www.cnblogs.com/MyReM/p/9019064.html

时间: 2024-08-30 06:32:01

基于spring的文件上传下载的相关文章

Android开发之网络请求通信专题(二):基于HttpClient的文件上传下载

上一篇专题Android开发之网络请求通信专题(一):基于HttpURLConnection的请求通信我们讲解了如何使用httpurlconnection来实现基本的文本数据传输.一般在实际开发中我们可以用于传输xml或者json格式的数据.今天我们来讲解另外一种http网络请求的方式:httpclient,并实现文件的上传和下载. 在这里插个题外话,其实这些网络请求有很多第三方jar包可以使用,这些包都封装得很好了.如果只是想使用,我们就直接拿别人得jar包来用就好.博主这里推荐一个叫xuti

基于struts2的文件上传下载

1.struts.xml 1 <struts> 2 <constant name="struts.multipart.maxSize" value="209715200" /><!-- 设置文件上传大小,2097152=2M --> 3 <package name="action" extends="struts-default" namespace="/">

Spring MVC文件上传下载(转载)

原文地址: http://www.cnblogs.com/WJ-163/p/6269409.html 上传参考 http://www.cnblogs.com/lonecloud/p/5990060.html 下载参考 一.关键步骤 ①引入核心JAR文件 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apache.commons中. ②书写控制器方法 applicationContext.x

spring mvc文件上传下载

web xml springMvc 注册添加 <multipart-config> <max-file-size>20848820</max-file-size> <max-request-size>418018841</max-request-size> <file-size-threshold>1048576</file-size-threshold> </multipart-config> springM

基于spring的文件上传--单文件上传

Spring配置文件 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="2000000"/> </bean> jsp页面 <form:form comm

SpringMVC文件上传下载

在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/qixiaoyizhan/p/5819392.html 今天我们来讲讲spring mvc中的文件上传和下载的几种方法. 首先附上文件目录->我们需要配置的我做了记号-> 一.文件上传 首先为了方便后续的操作,以及精简代码,我们在Utils包下封装一个文件上传下载的帮助类: Files_Helper

基于Java的一个简单的文件上传下载功能

最近在公司给客户端做接口,有一个图片上传和文件下载的功能,本来想用Struts来做文件上传下载,但是看了下公司好像没有这个配置,然后看了下同事的代码,才发现原来Apache也可以简单的实现文件上传下载. 首先引入commons-io-2.2.jar FileUtils为我们提供了很多对文件的操作的方法,比如上传整个文件夹的文件.上传单个文件等 然后请看代码下载: public static void uploadFile(String targetDirectory,String targetF

艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项目地址:http://www.51aspx.com/code/MSDCArtMengFileUpload 咨询qq:286275658 演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 服务器端运行效果图: 服务器端配置文件: <?xml version="1.

Struts2学习之文件上传/下载&amp;ValueStack(三)

简介 今天是学习Struts2第三天,也算struts2准备前奏告一段落,提升部分只能在后期深入了解,多看源码,多参阅资料.今天所学的知识点文件上传.下载/ValueStack&OGNL/Struts2标签 文件上传/下载 文件上传简介 a). 企业常用文件上传技术 : jspSmartUpload(主要应用 JSP model1 时代) . fileupload (Apache commons项目中一个组件). Servlet3.0 集成文件上传 Part类 b). Struts2 对文件上传