将图片上传到指定服务器并返回前端指定的url,下面代码中的ResultObject是统一返回值的一个类,大家可以把返回值定义成String,因为下面的代码需要返回一个储存路径给后台将该路径存到数据库。
```java
/**
* 上传图片
* @param file
* @param request
* @return
*/
@RequestMapping("/uploadFile")
@ResponseBody
public ResultObject uploadFile(MultipartFile file, HttpServletRequest request) {
if (file == null) {
return ResultObject.apiError("文件为空");
}
//上传图片
String fileName = "";
String oriName = "";
try {
//获取图片原始名称
oriName = file.getOriginalFilename();
//图片格式
String suffix = oriName.substring(oriName.lastIndexOf("."));
// 保存图片
File tempFile = File.createTempFile("expert", suffix);
file.transferTo(tempFile);
//服务器储存图片的地址
String uploadResult = FlieHttpUtil.uploadFile(储存图片的服务器地址, tempFile);
//此时已经上传到服务器,将在服务器中的名称进行字符串的解析
JSONObject json = JSON.parseObject(uploadResult);
fileName = json.getJSONObject("data").getString("fileName");
if (StringUtils.isBlank(fileName)) {
throw new Exception("fileName isEmpty");
}
tempFile.delete();
//返回下载地址,也就是我们以后要显示图片的地址,加上文件名的后缀即可显示
return ResultObject.ok(Constant.Url.FILE_DOWNLOAD_PATH + fileName);
} catch (Exception e) {
return ResultObject.apiError("fail");
}
}