一段关于文件上传调用的底层方法,
public Map exportFileToLocal(MultipartFile uploadfile, String
filePath, String localHost) {
FileOutputStream fos = null;
BufferedOutputStream bos = null;
UUID uuid = UUID.randomUUID();
Calendar cale = Calendar.getInstance();
int year = cale.get(1);
int month = cale.get(2) + 1;
String monthStr = String.valueOf(month);
if (monthStr.length() == 1) {
monthStr = "0" + monthStr;
}
String dirName = year + monthStr;
String fileOriginalName = uploadfile.getOriginalFilename();
String suffix = fileOriginalName.substring(fileOriginalName.lastIndexOf("."));
File file = new File(filePath + dirName);
HashMap map = new HashMap();
HashMap var17;
try {
if (!file.exists() || !file.isDirectory()) {
file.mkdir();
}
fos = new FileOutputStream(new File(filePath + dirName, uuid.toString() + suffix));
bos = new BufferedOutputStream(fos);
byte[] bytes = uploadfile.getBytes();
bos.write(bytes);
String fileUrl = localHost + "/" + dirName + "/" + uuid + suffix;
String fileCompletePath = filePath + dirName + "/" + uuid + suffix;
map.put("message", "success");
map.put("fileUrl", fileUrl);
map.put("filePath", fileCompletePath);
map.put("filePosition", "local");
HashMap var19 = map;
return var19;
} catch (Exception var29) {
var29.printStackTrace();
map.put("message", "fail");
var17 = map;
} finally {
if (bos != null) {
try {
bos.close();
} catch (IOException var28) {
var28.printStackTrace();
}
}
}
return var17;
}
一共传入三个参数,一个是本来传入的文件,第二第三个参数是自己拼接的地址,分别是是图片地址,将要保存的本地地址,然后中间用到了缓存流、uuid生成唯一序列号,保存了这个文件到本地。其实在本科期间也做过类似的代码,但是那会不是这种复杂的走逻辑的保存,就是直接指定图片的地址在那个文件夹这样的,总之一个原理。加油加油。