您的位置:首页 > 编程语言 > Java开发

SpringBoot实现单个和多个文件上传

2019-07-30 11:16 399 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_43957143/article/details/97761140

SpringBoot开发web项目,有一个MultipartFile接口。继承InputStreamSource,这个接口就是用来处理文件上传和保存。

1.写一个前端上传文件的页面:picUpload.html

<!DOCTYPE HTML>
<html>
<head>
<title>pictureUploading</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8 ">
</head>
<body>

<form enctype="multipart/form-data" method="post" action="/upload">
文件:<input type="file" name="fileUpload"/><br/>
<input type="submit" value="上传"/>
</form>

<form enctype="multipart/form-data" method="post" action="/uploads">
多个文件:<input type="file" name="file" multiple="multiple"/><br/>
<input type="submit" value="上传" />
</form>
</body>
</html>

页面放在templates包下面,自己创建一个upload包,用来放上传文件按页面:当然也可以直接放在tempates包下面

如果访问不到,可以参考一下链接:
SpringBoot如何返回(访问)到template下面的html页面

2.MVC模式下,Controller返回页面:

@RequestMapping("/picUpload")
public String picUpload(){
return "/upload/picUpload.html";
}

3.处理上传的单个文件:

@PostMapping("/upload")
@ResponseBody
public Object upload(MultipartFile fileUpload){
if(fileUpload.isEmpty()){
return "文件为空";
}
//获取文件名
String fileName = fileUpload.getOriginalFilename();
//获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//指定本地文件夹存储图片
String filePath = "C:/IDEA/WorkSpace/helloWorld/src/main/resources/upload/";
try {
//将图片保存到static文件夹里
fileUpload.transferTo(new File(filePath+fileName));
return "上传成功";
} catch (Exception e) {
e.printStackTrace();
return "上传失败";
}
}


箭头处是文件保存的路径:记得最后一个地方+“ / ”,否则只是保存在上一级路径下面。这里的upload文件是我临时建的。

4.处理多个文件上传:

@PostMapping("/uploads")
@ResponseBody
public Object uploads(MultipartFile[] file){
for(int i=0;i<file.length;i++) {
MultipartFile fileUpload=file[i];
//获取文件名
String fileName = fileUpload.getOriginalFilename();
//获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//指定本地文件夹存储图片
String filePath = "C:/IDEA/WorkSpace/helloWorld/src/main/resources/upload/";
try {
//将图片保存到static文件夹里
fileUpload.transferTo(new File(filePath + fileName));
} catch(Exception e) {
e.printStackTrace();
return "上传失败";
}
}
return "上传成功";
}


箭头这里我用的数组就可以了,也可使用HttpServlet处理。

5.启动项目,输入地址:http://localhost:8080/picUpload 测试:


点击选择文件,我们选择一张图片测试:
点击上传:返回上传成功,就是上传成功。

再到项目保存路径下寻找一下上传的文件是否存在:

表示我们上传成功。
同样的方法测试上传多个即可以了。

6.最后看一下核心类MultipartFile:

接口是在org.springframework.web.multipart.MultipartFile包下面,所以它是Spring-Web包下的,

接口继承了InputStreamSource

接口InputStreamSource是org.springframework.core.io包下的,看的出来时Spring核心IO包,可以理解为特殊的JAVA中的IO流。打开源码,我们看注解,也可得知:import java.io.IOException;;import java.io.InputStream;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: