当前位置: 首页 > news >正文

文件上传与下载

文章目录

  • 1. 前端要求
  • 2. 后端要求


1. 前端要求

在这里插入图片描述

//采用post方法提交文件
method="post"   
//采用enctype属性
enctype=""
//type属性要求
type="file"

2. 后端要求

在这里插入图片描述

package com.itheima.reggie.controller;import com.itheima.reggie.common.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.UUID;/*** 文件上传和下载*/
@RestController
@RequestMapping("/common")
@Slf4j
public class CommonController {@Value("${reggie.path}")private String basePath;/*** 文件上传* @param file* @return*/@PostMapping("/upload")public R<String> upload(MultipartFile file){//file是一个临时文件,需要转存到指定位置,否则本次请求完成后临时文件会删除log.info(file.toString());//原始文件名String originalFilename = file.getOriginalFilename();//abc.jpgString suffix = originalFilename.substring(originalFilename.lastIndexOf("."));//使用UUID重新生成文件名,防止文件名称重复造成文件覆盖String fileName = UUID.randomUUID().toString() + suffix;//dfsdfdfd.jpg//创建一个目录对象File dir = new File(basePath);//判断当前目录是否存在if(!dir.exists()){//目录不存在,需要创建dir.mkdirs();}try {//将临时文件转存到指定位置file.transferTo(new File(basePath + fileName));} catch (IOException e) {e.printStackTrace();}return R.success(fileName);}/*** 文件下载* @param name* @param response*/@GetMapping("/download")public void download(String name, HttpServletResponse response){try {//输入流,通过输入流读取文件内容FileInputStream fileInputStream = new FileInputStream(new File(basePath + name));//输出流,通过输出流将文件写回浏览器ServletOutputStream outputStream = response.getOutputStream();response.setContentType("image/jpeg");int len = 0;byte[] bytes = new byte[1024];while ((len = fileInputStream.read(bytes)) != -1){outputStream.write(bytes,0,len);outputStream.flush();}//关闭资源outputStream.close();fileInputStream.close();} catch (Exception e) {e.printStackTrace();}}
}
server:port: 8080
spring:application:#应用的名称,可选name: reggie_take_outreggie:path: D:\img\
在这里插入代码片
http://www.lryc.cn/news/151198.html

相关文章:

  • SpringBoot 整合 RabbitMQ
  • 气象科普丨气象站的分类与应用
  • 【论文精读】Learning Transferable Visual Models From Natural Language Supervision
  • 缓存和分布式锁笔记
  • React笔记(七)Antd
  • 无涯教程-Android - RadioButton函数
  • kafka如何避免消费组重平衡
  • 浅谈一下企业信息化管理
  • 北京APP外包开发团队人员构成
  • Node基础and包管理工具
  • 【python使用 Pillow 库】缩小|放大图片
  • 解决Ubuntu 或Debian apt-get IPv6问题:如何设置仅使用IPv4
  • Xubuntu16.04系统中解决无法识别exFAT格式的U盘
  • Pygame中Trivia游戏解析6-1
  • idea中创建springboot项目显示Spring Initializr Error
  • VScode 国内下载源 以及 nvm版本控制器下载与使用
  • GO|经典错误之回车与\n
  • 【MATLAB第71期】基于MATLAB的Abcboost自适应决策树多输入单输出回归预测及多分类预测模型(更新中)
  • ARM编程模型-内存空间和数据
  • leetcode原题: 最大数
  • docker 是什么
  • 基于Gin框架的HTTP接口限速实践
  • WSL中为Ubuntu和Debian设置固定IP的终极指南
  • axios+vite配置反向代理踩坑记录
  • Spring IOC的理解
  • 2023年京东箱包行业数据分析(京东数据运营)
  • 对称加密 非对称加密 AC认证 https原理
  • 如何在PyQt应用程序中使用Qt Designer和Pyuic工具?
  • 【云计算•云原生】5.云原生之初识DevOps
  • 20230830工作心得:巧用标记位和For循环遍历