项目的框架是springCloud 的一个服务,图片上传实际上就是用java的IO 流进行读写文件,给后台传递一个路径,后台通过浏览器链接到前端,将前端的图片数据拷贝的服务器的存储地址。 1. 服务端保存图片的地址: application.yml 文件中添加如下配置: - img:
- location: E:\hjy\workspace\wx-back-web\src\main\webapp\olimg\
复制代码2、有关文件上传实现 .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 - 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 测试 安装如下图红色标注的,就可以实现对图片上传的测试,
|