为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我在 Cloudinary Java 上收到“无效签名”错误?

为什么我在 Cloudinary Java 上收到“无效签名”错误?

白板的微信 2021-06-28 13:54:46
我正在尝试在 JSF 应用程序中实现 Cloudinary 上传。根据 Cloudinary 网站上的说明,我正在使用此依赖项:<dependency>    <groupId>com.cloudinary</groupId>    <artifactId>cloudinary-http44</artifactId>    <version>1.19.0</version></dependency>我有一个用于上传的类:package com.github.cvetan.bookstore.util;import com.cloudinary.*;import com.cloudinary.utils.ObjectUtils;import java.io.IOException;import java.util.HashMap;import java.util.Map;/** * * @author cvetan */public class CloudinaryFacade {    private final static Map<Object, Object> CONFIG = new HashMap<>();    static {        CONFIG.put("cloud_name", "cvetan");        CONFIG.put("api_key", "***");        CONFIG.put("api_secret", "***");    }    public static String upload(byte[] file) throws IOException {        Cloudinary cloudinary = new Cloudinary(CONFIG);        Map result = cloudinary.uploader().upload(file, ObjectUtils.emptyMap());        return (String) result.get("url");    }}但是当我尝试时,会抛出下面的异常:Invalid Signature 6e527a754f1f6fd84df0bd4c092df881c0ddc65f. String to sign - 'timestamp=1533653472'.任何帮助将不胜感激。谢谢。
查看完整描述

2 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

我已经设法让它工作。我最终将上传的文件内容从 PrimeFaces 复制uploadedFile到一个临时文件中,并将该文件发送到 Cloudinary 上传。


托管 bean 类方法(上传处理程序):


public String upload() {

        try {

            File uploadedFile = File.createTempFile("image", ".tmp");


            InputStream content = file.getInputstream();


            Files.copy(content, uploadedFile.toPath(), StandardCopyOption.REPLACE_EXISTING);


            String filename = CloudinaryFacade.upload(uploadedFile);


            return Redirector.redirectWithMessage(filename, FacesMessage.SEVERITY_INFO, null);

        } catch (IOException ex) {

            return Redirector.redirectWithMessage(ex.getMessage(), FacesMessage.SEVERITY_ERROR, null);

        }

    }

云端上传方式:


public static String upload(File file) throws IOException {

        Cloudinary cloudinary = new Cloudinary(CONFIG);

        Map<Object, Object> parameters = new HashMap<>();

        parameters.put("public_id", "Bookstore/Authors/Images/vejder");


        Map result = cloudinary.uploader().upload(file, parameters);


        return (String) result.get("url");

    }

谢谢你。


查看完整回答
反对 回复 2021-07-07
  • 2 回答
  • 0 关注
  • 179 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号