ueditor富文本编辑器上传(单图,多图,视频)到七牛服务器,java后端处理方法

博主为前端实现Ueditor单图、多图、视频等上传功能时遇到诸多问题。一是Ueditor请求参数在paramter而非requestBody中;二是不知如何从request获取流;三是后来发现七牛可将外网图片URL存到服务器并返回对应URL。最后博主表示将分享代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天给前端做一个功能,着实费了一番功夫。

前提:前端说让我写个方法,在ueditor中配置接口路径后,ueditor会自动调用接口,要实现单图、多图、视频等上传。

第一个坑:从ueditor过来的请求,参数不在requestBody中,而是在paramter中。所以对应的参数要去request中取。

第二个坑:不知道流怎么从request中获取,找了一些大牛的博客,找到了解决方法。

第三个坑:原来不知道七牛提供了一个可以直接将外网图片url直接存到七牛服务器上,并返回七牛上的url。

好了,话不多说,上代码!

@RequestMapping("/uploadAction")
@ResponseBody
public String uploadAction(HttpServletRequest request)throws Exception {
    String action = request.getParameter("action");
    MultipartFile upfile = null;
    if(action.equals("uploadimage") || action.equals("uploadvideo")){
        //如果是在request中传流,就要转换成这种request,才能取到文件
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        upfile = multipartRequest.getFile("upfile");
    }
    System.out.println("uploadAction------->action:"+action);
    JSONObject json = new JSONObject();
    String uuid = UUID.randomUUID().toString();
    QiniuUploadResultVo qiniuUploadResultVo = null;
    try{
        request.setCharacterEncoding("UTF-8");
        switch (action){
            case"config":
                String rootPath = this.getClass().getResource("/").getPath();
                File jsonFile = ResourceUtils.getFile(rootPath+"config.json");
                String configJson = FileUtils.readFileToString(jsonFile,"UTF-8");
                return configJson;
            case"uploadimage":
                qiniuUploadResultVo = qiNiuService.upload(upfile.getInputStream(),"weiyou/"+uuid);
                qiniuUploadResultVo.setKey("weiyou/"+uuid);
                json.put("data",qiniuUploadResultVo);
                return json.toJSONString();
            case"uploadvideo":
                qiniuUploadResultVo = qiNiuService.upload(upfile.getInputStream(),"weiyou/"+uuid);
                qiniuUploadResultVo.setKey("weiyou/"+uuid);
                json.put("data",qiniuUploadResultVo);
                return json.toJSONString();
            case"catchimage":
                //处理多张外网图片上传七牛逻辑
                //下面这行代码注意,ueditor很坑,它请求的数组的key是source[],而不是source!!!!
                String[] source = request.getParameterValues("source[]");
                List<String> list = Arrays.asList(source);
                //这个方法就是下面的
                List<JSONObject> result = qiNiuService.fetch(list);
                return JSONObject.toJSONString(result).toString();
        }
    }catch (Exception e){
        e.printStackTrace();
    }
    return "";
}

 

public List<JSONObject> fetch(List<String> list){
    Auth auth = Auth.create(accessKey, secretKey);
    BucketManager bucketManager = new BucketManager(auth);
    List<JSONObject> result = new ArrayList<>();
    try{
        if(list != null && list.size() > 0){
            for(int i = 0;i<list.size();i++){
                String uuid = UUID.randomUUID().toString();
                DefaultPutRet putret = bucketManager.fetch(list.get(i), bucket, uuid);
                String url = baseUrl +"/" + uuid;
                String source = "source["+i+"]";
                String state = "SUCCESS";
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("url",url);
                jsonObject.put("source",source);
                jsonObject.put("state",state);
                result.add(jsonObject);
            }
        }
    }catch (QiniuException ex) {
        System.err.println(ex.response.toString());
    }
    return  result;

}

还有问题的,给我留言!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值