MultipartFile实现单文件和多文件上传并带参数
Posted keithyang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MultipartFile实现单文件和多文件上传并带参数相关的知识,希望对你有一定的参考价值。
什么是MultipartFile
MultipartFile是spring类型,代表html中form data方式上传的文件,包含二进制数据+文件名称。【来自百度知道】
方法总结 | |
---|---|
byte[] |
getBytes() 以字节数组的形式返回文件的内容。 |
String |
getContentType 返回文件的内容类型。 |
FileItem |
getFileItem() 返回底层的org.apache.commons.fileupload.FileItem实例。 |
InputStream |
getInputStream() 返回一个InputStream来读取文件的内容。 |
String |
getName() 以multipart 表格的形式返回参数的名称。 |
String |
getOriginalFileName() 返回客户机文件系统中的原始文件名。 |
long |
getSize() 以字节的形式返回文件的大小 |
String |
getStorageDescription() 返回multipart的内容和存储位置描述。 |
protected boolean |
isAvailable() 确定Multipart内容是否仍然可用。 |
boolean |
isEmpty() 返回上传的文件是否为空,也就是说,在多部分表单中没有选择任何文件,或者选择的文件没有内容。 |
void |
transferTo(File dest) 将接收到的文件传输到给定的目标文件。 |
单文件上传
前段HTML页面:
JS处理,需要引用JQuery.js
FormData对象的使用
FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用。如果表单enctype
属性设为multipart/form-data ,则会使用表单的submit()方法来发送数据,从而,发送数据具有同样形式。
可以创建一个FormData对象,然后调用它的append()方法来添加字段。
后台Java处理:
BufferedOutputStream(缓冲输出流),继承于FilterOutputStrema,它的作用是为另一个输出流提供“缓冲功能”,该类实现一个缓冲输出流。通过设置这样的输出流,应用程序可以将字节写入底层输出流,而不必为写入的每个字节调用底层系统。
方法总结 | |
修饰符和类型 | 方法和描述 |
void |
flush() 刷新此缓冲输出流。 |
void |
write(byte[] b,int off,int len) 从指定字节数组的偏移处开始将len字节写入此缓冲输出流。 |
void |
write(int b) 将指定的字节写入此缓冲输出流。 |
多文件上传:
与单文件差别不大:前端多个<input type="file">,后端接收的时候方法参数使用数组:
@RequestParam("param") MultipartFile [] file
参考:Multipart 官方API
以上是关于MultipartFile实现单文件和多文件上传并带参数的主要内容,如果未能解决你的问题,请参考以下文章
[FE] 用 FormData 上传多个文件到 MultipartFile[] 接口
springMVC实现 MultipartFile 多文件上传,StandardMultipartHttpServletRequest上传文件,在请求中上传文件,比如上传图片