文件上传、下载、移动等等(以文件形式存/读)

163 阅读3分钟

以文件形式存储附件:

  1. 优点:文件形式存储附件便于文件管理和检索,易于理解和处理。
  2. 缺点:文件形式存储附件可能会增加存储空间的需求,以及处理附件时可能需要额外的处理步骤。

以二进制形式存储附件:

  1. 优点:二进制形式存储附件可以提高存储和检索速度,降低存储空间的需求。
  2. 缺点:二进制形式存储附件可能会增加处理附件时的工作量,对附件进行处理可能需要特定的工具和库。

🌟文件上传

为确保文件上传在不同浏览器的兼容性,所以建议使用form表单

三需

  1. methods="post" 采用post方式提交数据
  2. enctype="multipart/form-data" 采用multipart格式上传文件
  3. type="file" 使用input的file控件上传
    element中el-upload的底层也是input标签 image.png image.png image.png <input type="file"> image.png

size(文件大小)
单位:字节(byte),1KB等于 1024 字节,1MB等于 1024*1024个字节

type(类型) image.png

文件上传介绍
文件上传都是基于流继续操作,服务器端要接收客户端页面上传的文件。通常使用Apache的两组件

  1. commons-fileupload
  2. commons-io
    Spring框架对文件上传进行了封装,只需在controller方法中声明MultipartFile类型的参数即可接收上传的文件,其底层还是基于上方两Apache的两组件开发的

🥈前端代码

需要了解

底层实现代码

image.png enctype:提交表单的内容类型,值设置为multipart/form-data
action: 后端上传的接口地址,一般设置为服务器地址+接口请求地址

文件上传必须是post请求

image.png

file名不能随意起

image.png
这里的file必须和前端表单数据中的name一致 image.png 表单数据中的name="file"对应的是前端标签input中的name(element中默认名称为file)

<imput type="file" name="file" />

🥈后端代码

上传目录是否存在

//判断目录是否存在,不存在则创建该目录
File file1 = new File("D:\src\main\resources\backend\upload");
if (!file1.exists()) {    //判断目录是否存在,存在为true
    file1.mkdirs();       //创建目录
}

实践过程所出报错解决

中文乱码

image.png 解决报错之文章推荐
个人解决报错采用方法
向RequestMapping中添加produces属性,并设置其响应数据的类型为"application/json;charset=UTF-8" image.png

🌟文件下载

前端可参考:blog.csdn.net/qq_44848480…

文件下载介绍
将文件从服务器传输到本地计算机的过程
表现形式:
1、以附件形式下载、弹出保存对话框、将文件保存在指定磁盘当中
2、直接在浏览器打开


通过浏览器进行文件下载,本质时服务器端将文件以流的形式写回浏览器的过程

后端代码

codesnap.dev_editor_code=@GetMapping(%22_download%22)%0A++++public+void+download(String+name,+HttpServletResponse+response)+{%0A++++++++try+{%0A__%E6%96%87%E4%BB%B6%E5%82%A8%E5%AD%98%E8%B7%AF%E5%BE%84%0A++++++++++++.png

前端代码

image.png 注意: 不添加download="文件名" 时,下载附件会直接在浏览器中打开,添加后才可正常下载

困惑解析

下载附件时,会直接在浏览器打开,而不是下载文件本地

添加download,(i.name是文件名,传给后端所用) image.png

普通流HttpServletRequest设置响应头之name值的选择

image.png

🌟文件移动

功能可参考:www.nhooo.com/note/qa063a… image.png 主要应用了Files类中的move方法,接收两个绝对路径,不是端口+地址,是文件的绝对路径 image.png

image.png

知识彩蛋

什么时候用\ ,什么时候用/

image.png image.png