在HTTP中的header中Content-type中定义一个boundary(边界;分界线)属性,填加随机字符串,作为分隔符
Content-length也会随之变大
post代码
NewsController.java
@RequestMapping(path = "/uploadImage/" , method = { RequestMethod.POST })
@ResponseBody
public String uploadImage(@RequestParam("file") MultipartFile file){
try{
//将地址保存在fileUrl中
String fileUrl = newsService.saveImage(file);
//假如没有保存成功,返回错误
if(fileUrl == null){
return ToutiaoUtil.getJSONString(1,"上传图片失败");
}
//上传成功,JOSN返回消息
return ToutiaoUtil.getJSONString(0,fileUrl);
}catch (Exception e){
logger.error("上传图片失败"+e.getMessage());
return ToutiaoUtil.getJSONString(1,"上传图片失败");
}
}
NewsService.java
public String saveImage(MultipartFile file) throws IOException{
int dotPos = file.getOriginalFilename().lastIndexOf(".");
if(dotPos < 0){
return null;
}
String fileExt = file.getOriginalFilename().substring(dotPos+1).toLowerCase();
if (!ToutiaoUtil.isFileAllowed(fileExt)){
return null;
}
String fileName = UUID.randomUUID().toString().replaceAll("-","")+"."+fileExt;
Files.copy(file.getInputStream(),//生成数据流
new File(ToutiaoUtil.IMAGE_DIR+fileName).toPath(),//生成上传路径
StandardCopyOption.REPLACE_EXISTING);//假如有重复的名字进行替换(可选)
//指定图片地址
return ToutiaoUtil.TOUTIAO_DOMAIN+ "img?name=" + fileName;
}
Toutiao_Util
//域名
public static String TOUTIAO_DOMAIN = "http://127.0.0.1:8080/";
//上传地址
public static String IMAGE_DIR = "F:/work/upload/";
//存储合法的后缀名
public static String[] IMAGE_FILE_EXT = new String[]{"png","jpg","bmp","jpeg"};
//判断后缀名是否合法
public static Boolean isFileAllowed(String fileExt){
for(String ext : IMAGE_FILE_EXT){
if(ext.equals(fileExt)){
return true; }
}
return false; }