代码语言:javascript复制
package priv.kuki.admin.service.impl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import priv.kuki.utils.R;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.util.UUID;
@Service
@Slf4j
public class AdminProductServiceImpl implements AdminProductService {
@Resource
private HttpSession session;
@Override
public R upload(MultipartFile file) {
// 1.判断传过来的文件是否为空,若为空则报错退出!
if (file.isEmpty()) {
return R.fail("文件为空!");
}
// 2.获取完整文件名(包含拓展名)
String originalFilename = file.getOriginalFilename();
// 3.获取文件后缀。“.”后边的就是后缀,不包含".",但是后边设置文件名还要添加"."太麻烦
// String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") 1);
// 3.获取文件后缀。包含"."
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
// 4.设置新的文件名,通过UUID或时间戳生成文件名,再拼接上后缀名
String fileName = UUID.randomUUID() suffix;
// 5.获取服务器中保存文件的目录路径,比如images目录的路径
// ServletContext servletContext = session.getServletContext();
// String filePath = servletContext.getRealPath("images");
// 也可以保存在自己电脑指定路径下,注意是"\"双斜杠,一个是路径一个是Java转义符
String filePath = "D:\Pictures\";
// 6.在目录中新建文件
// File newFile = new File(filePath fileName); //会多一个同名文件夹
File newFile = new File(filePath );
if(!newFile.exists()){
// 若路径不存在在创建路径
newFile.mkdir();
}
// 7.最终文件路径 分隔符File.pathSeparatorChar 文件名
String finalPath = filePath File.pathSeparatorChar fileName;
try {
// 8.文件上传,new File()上传路径,上传可能会出现异常,比如存储空间不够...
file.transferTo(new File(finalPath));
}catch (Exception e){
e.printStackTrace();
return R.fail("文件上传失败!",e);
}
// 返回文件存储路径给前端
return R.ok("上传成功!",finalPath);
}
}