根据SpringMVC编写的下载上传简易模板

<%--
  Created by IntelliJ IDEA.
  User: 13554
  Date: 2019/12/23
  Time: 22:16
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <a href="download?fileName=a.txt">下载</a>
</body>
</html>

下载界面

文件下载的主要方法

 byte[] bytes=FileUtils.readFileToByteArray(file);
        outputStream.write(bytes);
package com.qyx.controller;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Controller
public class DemoController {
    @RequestMapping("/download")
    public void download(String fileName, HttpServletResponse response, HttpServletRequest request) throws IOException {
        response.setContentType("text/html;charset=UTF-8");
        //设置响应流中的文件进行下载
        //response.setHeader("Content-Disposition","attachment;filename"+fileName);
        response.setHeader("Content-Disposition","attachment;filename="+fileName);
        //ServletOutputStream outputStream=response.getOutputStream();
        ServletOutputStream outputStream=response.getOutputStream();
        //获取文件完整路径(绝对路径)
        //String realPath=request.getServletContext().getRealPath("files");
        String realPath=request.getServletContext().getRealPath("files");
        //File file=new File(realPath,fileName);
        File file=new File(realPath,fileName);
        //byte[] bytes=FileUtils.readFileToByteArray(file);
        byte[] bytes=FileUtils.readFileToByteArray(file);
        outputStream.write(bytes);
        outputStream.flush();
        outputStream.close();
    }}

控制文件下载的控制器

<%--
  Created by IntelliJ IDEA.
  User: 13554
  Date: 2019/12/25
  Time: 16:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<!--需要设置enctype="multipart/form-data"才能进行文件上传-->
<form method="post" enctype="multipart/form-data" action="upload">
    姓名:<input type="text" name="name">
    文件:<input type="file" name="file">
    <input type="submit" value="提交">
</form>
</body>
</html>
package com.qyx.controller;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

@Controller
public class DemoController {
@RequestMapping("/upload")  
    public String upload(MultipartFile file,String name) throws IOException {
        //String fileName=file.getOriginalFilename();
        String fileName=file.getOriginalFilename();
        //String suffix=fileName.substring(fileName.lastIndexOf("."));
        String suffix=fileName.substring(fileName.lastIndexOf("."));
        if (suffix.equalsIgnoreCase(".txt"))
        {
            //为防止文件重名而设置的随机ID
            String uuid= UUID.randomUUID().toString();
            FileUtils.copyInputStreamToFile(file.getInputStream(),new File("E:/"+uuid+suffix));
            return "success";
        }
            return "error";
    }}

文件上传

1 基于apache的commons-fileupload.jar完成文件上传
2 MultipartResovler作用
2.1 把客户端上传的文件流转换成MultipartFile封装类
2.2 通过MultipartFile封装类获取到文件流
3 表单数据类型分类
3.1 在form的enctype属性控制表单类型为 "multipart/form-data"

4 控制器中MultipartFile的参数名必须和input file标签里的name属性值保持一致

5 文件上传核心方法

 FileUtils.copyInputStreamToFile(InputStream,File);

原文地址:https://www.cnblogs.com/qyx66/p/12109708.html

时间: 2024-08-30 03:31:32

根据SpringMVC编写的下载上传简易模板的相关文章

SpringMVC实现文件的上传和下载

前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的上传和下载?是框架还是Java中的IO流".我回复他说:"使用SpringMVC框架可以做到这一点,因为SpringMVC为文件的上传提供了直接的支持,但需要依赖Apache提供Commons FileUpload组件jar包."鉴于这个问题,我上网也百度了一下,网上很多都是介绍的使用IO流来实现文件的上传和下载,也有说到框架的,但介绍的并不是很完整,今天小钱将和大家介绍使用Spr

springmvc如何做到批量上传和下载的(单个下载)

springmvc的上传依靠MultipartHttpServletRequest来获取请求,通过请求来获取file前端的名字,从而获取MultipartFile, 代码如下: 其实就是获取上传的名字,指定上传的路径,然后指定上传到固定的地方,主要看for循环里面的,其他根据自己的业务逻辑来判断添加的, 下载: 下载也主要抓住两个要点:第一个:(1)需要设置下载的类型,contentype有不同的值,比如:text或html,可以传"text/html",如果是pdf,doc,又是另外

SpringMVC实现单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和SpringMVC文件

【springMVC】之文件上传

通过前两篇博客的学习,想必大家对springMVC已经有了一个基本的认识.今天我们主要来学习一下springMVC两种文件上传的方式. 首先介绍第一种,通过字节流的方式实现文件上传.首先创建一个upload.jsp页面 <body> <h>添加用户</h> <!-- entype要声音和支撑这种类型的,保证文件上传不会被解码--> <!-- form表单,action是说讲这个表单提交到什么路径: method="post"是提交方

SpringMVC学习(九)——SpringMVC中实现文件上传

这一篇博文主要来总结下SpringMVC中实现文件上传的步骤.但这里我只讲单个文件的上传. 环境准备 SpringMVC上传文件的功能需要两个jar包的支持,如下: 工程中肯定要导入以上两个jar包,主要是CommonsMultipartResolver解析器依赖commons-fileupload和commons-io这两个jar包. 单个文件的上传 前台页面 我们要改造editItem.jsp页面,主要是在form表单中添加商品图片一栏,效果我截图如下: 注意一点的是form表单中别忘了写e

WP8.1 Study17:网络之后台下载/上传及HttpClient

一.后台下载/上传 1.简介 使用BackgroundTransferGroup可以十分方便操作上传及下载文件,BackgroundDownloader和BackgroundUploader类中的方法提供一系列方法交互这一过程,因此我们也可以利用live tile或toast显示传输的状态. 2.下载代码 代码一: async void DownloadFile(Uri sourceUri, string destFilename) { cts = new CancellationTokenSo

https 协议下服务器根据网络地址下载上传文件问题

https 协议下服务器根据网络地址下载上传文件遇到(PKIX:unable to find valid certification path to requested target 的问题) 使用httpclient  所有站点全部信任 不做身份鉴定: 1 public static CloseableHttpClient getHttpClient() throws Exception { 2 SSLConnectionSocketFactory sslsf = null; 3 Poolin

springMVC + hadoop + httpclient 文件上传请求直接写入hdfs

springMVC + hadoop + httpclient 文件上传请求直接写入hdfs

springmvc和servlet在上传和下载文件(保持文件夹和存储数据库Blob两种方式)

参与该项目的文件上传和下载.一旦struts2下完成,今天springmvc再来一遍.发现springmvc特别好包,基本上不具备的几行代码即可完成,下面的代码贴: FileUpAndDown.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"%> <html> <head> <title>using commons Upload to