Vue+SpringBoot实现wangEditor上传图片实例

Vue+SpringBoot实现wangEditor上传图片实例

1.前端Vue

安装步骤跳过,直接上代码。
注意必须在mounted方法体里面。

export default {
  name: "EditArticle",
  data() {
    return {
      editor: ""
    }
  },
  methods: {
    submit() {

      console.log(this.editor.txt.html());
    }
  },
  mounted() {

    this.editor = new E('#toolbar-container', '#text-container');

    this.editor.config.uploadImgServer = 'http://xxx.com:9999/article/imgUpload';//后端接口位置
    this.editor.config.uploadFileName = 'file';//参数名字
    this.editor.create();
  }
}

2.后端

2.1接口

@RestController
//@CrossOrigin(allowCredentials = "true")
@RequestMapping("/article")
public class ArticleController {

    private String serverPath="http://xxx.xxx:9999/images/";

    @PostMapping(value = "/imgUpload", headers = "content-type=multipart/form-data")
    public ImgResult imgUpload(@RequestParam("file") MultipartFile file) {

        String str = file.getOriginalFilename();
        str= SaltUtils.getSalt(8)+str;  //前面获取一个8位的随机盐,防止文件重名
        String filePath = "/opt/userFile/img/"; //文件存放位置
        String filePathName = filePath + str;  //文件存放位置加文件名
        //进行保存文件
        try {
            File savePathFile = new File(filePath);

            //如果目录不存在
            if (!savePathFile.exists()) {
                savePathFile.mkdirs();//创建文件
            }

            File saveFile = new File(filePathName);
            saveFile.createNewFile();

            file.transferTo(saveFile);

            filePathName=serverPath+str;
            String[] strings = {filePathName};//返回给前端的图片地址

            return ImgResult.succ(strings);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return ImgResult.fail();
    }
}

2.2封装结果类

@Data
public class ImgResult {
    private Integer errno;
    private String [] data;

    public static ImgResult succ(String []object){
        ImgResult imgResult = new ImgResult();
        imgResult.setErrno(0);
        imgResult.setData(object);
        return imgResult;
    }
    public static ImgResult fail(){
        ImgResult imgResult =new ImgResult();
        imgResult.setErrno(-1);
        imgResult.setData(null);
        return imgResult;
    }
}

2.3配置文件类,配置跨域,和文件映射

跨域:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    /**
     * 开启跨域
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 设置允许跨域的路由
        registry.addMapping("/**")
                // 设置允许跨域请求的域名
                .allowedOriginPatterns("*")
                // 是否允许证书(cookies)
                .allowCredentials(true)
                // 设置允许的方法
                .allowedMethods("*")
                // 跨域允许时间
                .maxAge(3600);
    }

}

文件映射(实现外网可以通过一个url就访问云服务器上的文件)

@Configuration
@EnableWebMvc
public class Config extends WebMvcConfigurerAdapter {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**")   //虚拟路径,即通过url访问时的路径
                .addResourceLocations("file:/opt/userFile/img/"); //配置图片存储的实际路径 ,如果是linux一定要加前面的file:字段,就像代码中的一样
    }
}

3.测试

就可以直接通过QQ截图粘贴进输入框就行了。
Vue+SpringBoot实现wangEditor上传图片实例

上一篇:Window 函数


下一篇:Android ---------- 清单文件中Activity常规设置