首先创建一个controller类,再在类中写入:
//创建一个类成员变量,简单日期格式变量
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
@RequestMapping("/upload")
public String upload(MultipartFile uploadFile, HttpServletRequest request){
String realPath=request.getSession().getServletContext().getRealPath("/uploadFile/");
System.out.println(realPath);//控制台输出文件的存储位置,以便校对
String format=sdf.format(new Date());//创建一个日期变量并规定其格式
File folder=new File(realPath+format);//创建一个文件对象folder,参数是文件夹名
if (!folder.isDirectory()){
//directory:目录、文件,检查folder是否为文件夹
folder.mkdirs();//依照文件名生成所有目录,mkdir只会生成最后的目录
//File file=new File("C://a/b");mkdir只生成目录b,mkdirs生成所有目录a/b
String oldName=uploadFile.getOriginalFilename();
//UUID.randomUUID().toString():生成一个在此刻唯一的全局唯一标识符(由时间数组成的)
//substring:截取指定两个下标之间的字符串
String newName= UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf("."),oldName.length()-0);
try{
//transfer to:转移到,new File(folder,newName):目录folder底下的文件名newName
uploadFile.transferTo(new File(folder,newName));//把上传的文件复制给newFile
//getScheme:返回当前链接使用的协议:http,getServerName:获得服务器名称,getServerPort:获得服务器端口
String filePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/uploadFile/"+format+newName;
return filePath;//返回文件的存储位置,可在浏览器中直接复制访问
} catch(IOException e){
e.printStackTrace();
}
}
return "上传失败!";
}