SpringBoot上传下载

简介: SpringBoot上传下载

额外加入的依赖


<dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.4</version>
    </dependency>


上传


上传页面:注意上传域的name属性要和controller参数名一致,enctype属性


<form method="POST" enctype="multipart/form-data" action="fileUpLoad.action">
    <p>
      文件:<input type="file" name="file" />
    </p>
    <p>
      <input type="submit" value="上传" />
    </p>
  </form>


上传参数控制


package com.example.demo.config;
import javax.servlet.MultipartConfigElement;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * 配置上传
 * @author 柴火
 *
 */
@Configuration
public class FileUpLoadConfig {
  @Bean
  public MultipartConfigElement multipartConfigElement() {
    MultipartConfigFactory factory = new MultipartConfigFactory(); 
     设置文件大小限制,超了,页面会抛出异常信息,这时候就需要进行异常信息的处理了;
    factory.setMaxFileSize("128KB"); // KB,MB 
    /// 设置总上传数据总大小
    factory.setMaxRequestSize("256KB"); 
    // Sets the directory location where files will be stored. 设置上传路径
    //factory.setLocation("路径地址");
    return factory.createMultipartConfig();
  }
}


controller代码(2种上传方式)


package com.example.demo.controller;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class UpLoadController {
  @RequestMapping("/fileUpLoad.action")
  @ResponseBody
  public String upLoadFile(MultipartFile file) throws IllegalStateException, IOException {
    BufferedOutputStream stream = null;
    if (!file.isEmpty()) {
      String path = "E:/stsWorkSpace/SpringBoot_Test/src/main/resources/upload";
      File newFile=new File(path+"/"+file.getOriginalFilename());
      if(!newFile.exists()){
        newFile.createNewFile();
      }
      BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(newFile)); 
      out.write(file.getBytes()); 
      out.flush(); 
      out.close(); 
      return "上传成功";
    }
    return "上传失败";
  }
}


package com.example.demo.controller;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
@Controller
public class UpLoadController {
  @RequestMapping("/fileUpLoad.action")
  @ResponseBody
  public String upLoadFile(MultipartFile file) throws IllegalStateException, IOException {
    BufferedOutputStream stream = null;
    if (!file.isEmpty()) {
      // 打印文件的名称
      System.out.println("FileName:" + file.getOriginalFilename());
      // 确定上传文件的位置
      String path = "E:/stsWorkSpace/SpringBoot_Test/src/main/resources/upload";
      File newFile = new File(path, file.getOriginalFilename());
      //如果不存在,创建一哥副本
      if (!newFile.exists()) {
        newFile.createNewFile();
      }
      //将io上传到副本中
      file.transferTo(newFile);
      return "上传成功";
    }
    return "上传失败";
  }
}


下载


package com.example.demo.controller;
import java.io.File;
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.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class DownLoadController {
  @RequestMapping("/fileDownLoad.action")
  public ResponseEntity<byte[]> textFileDownload() throws Exception {
    String path = "E:/WorkSpace1/SpringMVC_001/WebContent/WEB-INF/fileupload/1.jpg";
    File file = new File(path);
    HttpHeaders headers = new HttpHeaders();
    // String fileName=new
    // String("你好.xlsx".getBytes("UTF-8"),"iso-8859-1");//为了解决中文名称乱码问题
    String fileName = new String(file.getName().getBytes("UTF-8"), "iso-8859-1");// 为了解决中文名称乱码问题
    headers.setContentDispositionFormData("attachment", fileName);
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
  }
}
目录
相关文章
|
4月前
|
存储 前端开发 Java
SpringBoot使用云端资源url下载文件的接口写法
在Spring Boot中实现从云端资源URL下载文件的功能可通过定义REST接口完成。示例代码展示了一个`FileDownloadController`,它包含使用`@GetMapping`注解的方法`downloadFile`,此方法接收URL参数,利用`RestTemplate`下载文件,并将文件字节数组封装为`ByteArrayResource`返回给客户端。此外,通过设置HTTP响应头,确保文件以附件形式下载。这种方法适用于从AWS S3或Google Cloud Storage等云服务下载文件。
452 7
|
12天前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
51 8
|
1月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
42 6
|
6月前
|
XML JavaScript 前端开发
springboot配合Freemark模板生成word,前台vue接收并下载【步骤详解并奉上源码】
springboot配合Freemark模板生成word,前台vue接收并下载【步骤详解并奉上源码】
211 2
|
2月前
|
存储 前端开发 Java
springboot文件上传和下载接口的简单思路
本文介绍了在Spring Boot中实现文件上传和下载接口的简单思路。文件上传通过`MultipartFile`对象获取前端传递的文件并存储,返回对外访问路径;文件下载通过文件的uuid名称读取文件,并通过流的方式输出,实现文件下载功能。
springboot文件上传和下载接口的简单思路
|
1月前
|
JavaScript 前端开发 Java
Springboot+vue实现文件的下载和上传
这篇文章介绍了如何在Springboot和Vue中实现文件的上传和下载功能,包括后端控制器的创建、前端Vue组件的实现以及所需的依赖配置。
198 0
|
3月前
|
Java
Java SpringBoot FTP 上传下载文件
Java SpringBoot FTP 上传下载文件
136 0
|
3月前
|
JavaScript Java
SpringBoot 下载文件
SpringBoot 下载文件
34 0
|
3月前
|
JavaScript Java Spring
SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名
SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名
195 0