图片上传与下载

Posted gavin-yao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片上传与下载相关的知识,希望对你有一定的参考价值。

private static final String IMAGE_TYPE_PROMPT = "文件格式仅支持jpg、png";
private static final String IMAGE_FILE_SIZE_PROMPT = "文件格式仅支持jpg、png";
public String saveUserImageToDir(MultipartFile multipartFile, String dir) throws AobpException, IOException {
if (!ImageUtil.checkIsImgByName(multipartFile.getOriginalFilename())) {
throw new AobpException(ExceptionConstant.PARAMS_INVALID, IMAGE_TYPE_PROMPT);
}
if (!ImageUtil.fileSizeLegal(multipartFile.getSize())) {
throw new AobpException(ExceptionConstant.PARAMS_INVALID, IMAGE_FILE_SIZE_PROMPT);
}
return UploadUtil.upload(multipartFile,dir);
}

public class UploadUtil {

/**
* @return dest file name
*/
public static String uploadFileToDir(MultipartFile multipartFile, String saveDir) throws AobpException {
String fileName = UUID.randomUUID().toString().replaceAll("-", "");
// 文件新路径:文件名
uploadFileToDir(multipartFile, saveDir, fileName);
return fileName;
}

public static void uploadFileToDir(MultipartFile multipartFile, String saveDir, String fileName) throws AobpException {
uploadFile(multipartFile, saveDir + File.separator + fileName);
}

public static void uploadFile(MultipartFile multipartFile, String filePath) throws AobpException {
try (InputStream inputStream = multipartFile.getInputStream();
FileOutputStream outputStream = new FileOutputStream(filePath)) {
IOUtils.copy(inputStream, outputStream);
} catch (Exception e) {
log.error("copy file failed", e);
throw new AobpException(ExceptionConstant.INTERNAL_ERR, ExceptionConstant.UNKNOWN_ERROR);
}
}

//用户上传相关Yao
protected static Map<String, String> getFilePath(String path, String originName){
Date nowDate = new Date();
String fileFolder = path+File.separator+new SimpleDateFormat("yyyy").format(nowDate)+
File.separator+new SimpleDateFormat("MM").format(nowDate);

File fileNew = new File(fileFolder);
if(!fileNew.exists()){
fileNew.mkdirs();
}
String fileName = new SimpleDateFormat("yyyyMMddhhmmssSSSS").format(nowDate)+(int)((Math.random()*9+1)*100000)+"."+originName.substring(originName.lastIndexOf(".")+1);
String filePath = fileFolder+File.separator+fileName;
Map<String, String > resultMap = new HashMap();
resultMap.put("fileName",fileName);
resultMap.put("filePath",filePath);
return resultMap;
}

public static String upload(MultipartFile file, String saveDir) throws IOException, AobpException {
//如果文件内容不为空,则写入上传路径
if (!file.isEmpty()) {
//上传原文件名
String originName = file.getOriginalFilename();
Map<String, String> resultMap = getFilePath(saveDir, originName);
File filePath = new File(resultMap.get("filePath"));
try(FileOutputStream fileOutputStream = new FileOutputStream(filePath)){
FileCopyUtils.copy(file.getInputStream(), fileOutputStream);
}
return resultMap.get("fileName");
}
throw new AobpException(500, "图片上传失败");
}
}

以上是关于图片上传与下载的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot+MyBatisPlus文件上传与文件下载的应用与实现

原生图片上传与加载

app上传图片被拦截怎么办

WebApi2 文件图片上传下载

Laravel框架高清图库壁纸图片素材分享上传下载网站源码

.net 实现的上传下载,如果是图片就显示上传的图片