添加依赖
创建静态上传页面 添加上传文件控制器 添加上传文件控制器 注意多文件上传的细节,客户端要开户多文件选择支持,服务端要遍历上传后的文件数组 启动工程并打开上传页面 选择要上传的文件 确认后上传 上传成功后,返回文件路径集合字符串 通过返回的地址访问上传后的文 完成的控制器源码package cn.metrox.test;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@RestController
public class FileUploadController {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@PostMapping("/uploads")
public String upload(MultipartFile[] uploadFiles, HttpServletRequest req){
String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
String format = sdf.format(new Date());
File forlder = new File(realPath+format);
if(!forlder.isDirectory()){
forlder.mkdirs();
}
List<String> filePaths = new ArrayList<String>();
for(MultipartFile uploadFile:uploadFiles) {
String oldName = uploadFile.getOriginalFilename();
String newName = UUID.randomUUID().toString() + oldName.substring(oldName.lastIndexOf("."),oldName.length());
try{
uploadFile.transferTo(new File(forlder,newName));
String filePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+ format+"/"+newName;
filePaths.add(filePath);
}catch (Exception e){
e.printStackTrace();
}
}
if(filePaths.stream().count() == uploadFiles.length){
return filePaths.toString();
}else{
return "上传失败,有些文件没有上传成功";
}
}
}
网友评论