項目的框架是springCloud 的一個服務,圖片上傳實際上就是用java的IO 流進行讀寫文件,給後臺傳遞一個路徑,後臺經過瀏覽器連接到前端,將前端的圖片數據拷貝的服務器的存儲地址。前端
1. 服務端保存圖片的地址:java
application.yml 文件中添加以下配置:web
img: location: E:\hjy\workspace\wx-back-web\src\main\webapp\olimg\
二、有關文件上傳實現spring
.Controller 中獲取路徑的瀏覽器
import org.springframework.beans.factory.annotation.Value; @Value("${img.location}") private String location;
Controller 中的方法:服務器
import org.springframework.web.bind.annotation.PathVariable; @RequestMapping("/uploadImg/{imgType}") public String uploadImg( @RequestParam("ediormd-image-file") MultipartFile[] files,@PathVariable("imgType") String imgType) { ResponseData res = new ResponseData(); List<ProductPic> proPicList = new ArrayList<ProductPic> (); String filePath = location + imgType +"/"; try { if(files != null && files.length >0){ for( int i=0;i<files.length;i++){ ProductPic proPic = new ProductPic(); MultipartFile file = files[i]; String contentType = file.getContentType(); String fileName = file.getOriginalFilename(); System.out.println("fileName-->" + fileName); System.out.println("getContentType-->" + contentType); String resfileNewName = FileUtil.uploadFile(file.getBytes(), filePath, fileName); proPic.setPicUrl(filePath +resfileNewName); if(imgType.equals("list")){ proPic.setPicName("列表圖"); }else if("caro".equals(imgType)){ proPic.setPicName("輪播圖"); }else if("intr".equals(imgType)){ proPic.setPicName("介紹圖"); }else if("thum".equals(imgType)){ proPic.setPicName("縮略圖"); } proPicList.add(proPic); } } res.setCode(Constant.SUCCESS_CODE); res.setResult(proPicList); res.setMessage(Constant.SUCCESS_MSG); } catch (IOException e) { e.printStackTrace(); res.setCode(Constant.FAIL_CODE); res.setMessage(Constant.FAIL_MSG); } catch (Exception e) { e.printStackTrace(); res.setCode(Constant.FAIL_CODE); res.setMessage(Constant.FAIL_MSG); } JSONObject rdJson = JSONObject.fromObject(res); return rdJson.toString(); }
輔助類ResponseData app
public class ResponseData { private Object result; // 返回結果 private Object baseResult;// 基礎信息返回結果 private String code; // 返回code private String message; // 返回提醒消息 public Object getResult() { return result; } public void setResult(Object result) { this.result = result; } public Object getBaseResult() { return baseResult; } public void setBaseResult(Object baseResult) { this.baseResult = baseResult; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
文件上傳服務類:框架
public class FileUtil { /** * 上傳文件並返回文件的名字 * @param file * @param filePath * @param fileName * @return * @throws Exception */ public static String uploadFile(byte[] file,String filePath,String fileName) throws Exception{ String time = DateHelper.formatDate(new Date(), "yyMMddHHssmm"); fileName = time +"_" +fileName ; File targetFile = new File(filePath); if(!targetFile.exists()){ targetFile.mkdir(); } FileOutputStream out = new FileOutputStream(filePath + fileName); out.write(file); out.flush(); out.close(); return fileName; } }
3. 經過PostMan 測試webapp
安裝以下圖紅色標註的,就能夠實現對圖片上傳的測試,測試