SpringMVC实现文件上传&下载(2)

这篇具有很好参考价值的文章主要介绍了SpringMVC实现文件上传&下载(2)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件上传步骤

第一步:由于SpringMVC使用的是commons-fileupload实现,故将其组件引入项目中,这里用到的是commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。

第二步:spring-mvx中配置MultipartResolver处理器。可在此加入对上传文件的属性限制。

第三步:在Controller的方法中添加MultipartFile参数。该参数用于接收表单中file组件的内容

第四步:编写前台表单。注意enctype="multipart/form-data"以及<input type="file" name="****"/>,如果是单个文件直接使用MultipartFile 即可

springmvc.xml
<!-- 文件上传 -->
 <bean id="multipartResolver"  
   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
   <!-- 设置上传文件的最大尺寸为10MB -->  
   <property name="maxUploadSize">  
       <value>10000000</value>  
   </property>  
  </bean>  
controller

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class FileUploadController {


    //TODO:上传代码
    @RequestMapping("/fileupload")
    public ModelAndView upload(String name,
            //上传多个文件
            @RequestParam("file") MultipartFile[] file,
            HttpServletRequest request) throws IllegalStateException,
            IOException {

        //获取文件 存储位置
        String realPath = request.getSession().getServletContext()
                .getRealPath("/uploadFile");

        File pathFile = new File(realPath);

        if (!pathFile.exists()) {
            //文件夹不存 创建文件
            pathFile.mkdirs();
        }
        for (MultipartFile f : file) {

            System.out.println("文件类型:"+f.getContentType());
            System.out.println("文件名称:"+f.getOriginalFilename());
            System.out.println("文件大小:"+f.getSize());
            System.out.println(".................................................");
            //将文件copy上传到服务器
            f.transferTo(new File(realPath + "/" + f.getOriginalFilename()));
             //FileUtils.copy
        }
        //获取modelandview对象
        ModelAndView view = new ModelAndView();
        view.setViewName("redirect:index.jsp");
        return view;
    }



    //TODO:下载代码
    @RequestMapping(value = "/filedownload")  
    public ModelAndView download(HttpServletRequest request,  
            HttpServletResponse response) throws Exception {  

//        String storeName = "Spring3.xAPI_zh.chm";  
        String storeName="文件.txt";
        String contentType = "application/octet-stream";  
        FileUploadController.download(request, response, storeName, contentType);  
        return null;  
    }  

    //文件下载 主要方法
    public static void download(HttpServletRequest request,  
            HttpServletResponse response, String storeName, String contentType
           ) throws Exception {  

        request.setCharacterEncoding("UTF-8");  
        BufferedInputStream bis = null;  
        BufferedOutputStream bos = null;  

        //获取项目根目录
        String ctxPath = request.getSession().getServletContext()  
                .getRealPath("");  

        //获取下载文件露肩
        String downLoadPath = ctxPath+"/uploadFile/"+ storeName;  

        //获取文件的长度
        long fileLength = new File(downLoadPath).length();  

        //设置文件输出类型
        response.setContentType("application/octet-stream");  
        response.setHeader("Content-disposition", "attachment; filename="  
                + new String(storeName.getBytes("utf-8"), "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();  
    }  

}  

注意:注意:设置表单中form表单的属性为:enctype="multipart/form-data"文章来源地址https://www.toymoban.com/news/detail-837906.html

到了这里,关于SpringMVC实现文件上传&下载(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringMVC Day 08 : 文件上传下载

    文件上传和下载是 Web 开发中的重要环节,但它们往往不那么容易实现。幸运的是,Spring MVC 提供了一套简单而又强大的解决方案,让我们可以专注于业务逻辑,而不必过多关注底层的文件处理细节。 在本篇博客中,我们将学习如何利用 Spring MVC 实现文件上传和下载功能。首

    2024年02月06日
    浏览(30)
  • 【SpringMVC】文件上传与下载、JREBEL使用

    目录 一、引言 二、文件的上传 1、单文件上传 1.1、数据表准备 1.2、添加依赖 1.3、配置文件 1.4、编写表单 1.5、编写controller层 2、多文件上传 2.1、编写form表单 2.2、编写controller层 2.3、测试 三、文件下载 四、JREBEL使用 1、下载注册 2、离线设置 为什么要使用文件的上传下载?

    2024年02月07日
    浏览(30)
  • 11、SpringMVC之文件下载和上传

    创建名为spring_mvc_file的新module,过程参考9.1节和9.5节 注意:springmvc 根据bean的id来获取文件解析器,因此必须设置 id 属性,且属性值必须为 multipartResolver 如果上传了同名的文件,那新的文件就会覆盖旧的文件; 因此需要通过一个机制,保证上传后的文件名的不会和新上传的

    2024年02月05日
    浏览(29)
  • SpringMVC之文件上传下载以及jrebel的使用

    目录 一、文件上传 1.1 导入依赖 1.2 配置文件上传解析器 1.3 配置服务器存放文件地址 1.3.1 点击编辑Configurations 1.3.2 将项目部署至tomcat服务器上 1.3.3 配置相对路径 1.4 导入PropertiesUtil工具类 1.5 编写resource.properties 1.6 添加sql 1.7 编写PageController类 1.8 编写主页展示界面 1.9 编

    2024年02月09日
    浏览(31)
  • SpringMVC实现表单文件的上传

    Content-Type 类型 HTTP的Content-Type是一种标识HTTP请求或响应中包含的实体的媒体类型的头部字段。它指示了数据的类型,使接收方能够正确处理数据。以下是一些常见的Content-Type类型:text/plain:纯文本,没有特定格式。 text/html:HTML文档。 text/css:Cascading Style Sheets (CSS)。 text/j

    2024年02月07日
    浏览(28)
  • SpringMVC实现多文件上传源码

    2024年03月09日
    浏览(50)
  • 【SpringMVC】Jrebel 插件实现热部署与文件上传

    目录 一、JRebel 1.1 Jrebel介绍 1.2 Jrebel插件下载 1.3 Jrebel服务下载并启动 1.4 在线生成GUID 1.5 JRebel激活  1.6 相关设置 注意❗ 二、文件上传、下载 2.1 导入pom依赖 2.2 配置文件上传解析器 2.3 文件上传表单设置 2.4 文件上传实现 2.5 文件下载实现 2.6 多文件上传、下载 注意❗   

    2024年02月09日
    浏览(35)
  • springmvc上传与下载

    index.jsp代码 WEB-INF下的success.jsp代码 spring.xml FileController代码 运行的时候,浏览器页面要在WEB-INF下的index.jsp,跑完该项目时,页面是webapp下的index.jsp,所以跑完之后切换请求路径(/toFile)进入WEB-INF下的index.jsp DownloadController代码 跑的时候记得在路径带上 file=XXX ,并在执行前指

    2024年01月18日
    浏览(22)
  • 实现文件上传和下载

    文件上传的前端页面: multiple表示支持一次上传多个文件 上传单个文件的servlet代码: @MultipartConfig该注解表示这个servlet支持文件上传 支持一次上传多个文件的servlet代码实例: 展示文件列表: 下载文件的前端页面 下载文件的servlet:

    2024年02月08日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包