Uploadcare:无法使用Java Library将文件从Uploadcare存储复制到AWS S3存储桶

时间:2015-02-27 23:40:31

标签: java amazon-s3 uploadcare

我对Uploadcare很新。我试图从Uploadcare检索文件UUID,然后使用该UUID将图像复制到我的S3存储桶。我正在使用git-hub上提供的Uploadcare API:here

代码非常容易实现。这就是我所拥有的:

package javaapplication2;

import com.uploadcare.api.Client;
import com.uploadcare.data.CopyFileData;
public class UploadAPITest {

public static void main(String[] args) {

    Client client = new Client("mypublicKey", "myprivateKey");
    CopyFileData copyFile = client.copyFile("d5e97aca-f6d9-47ea-8c76-1fe36d093b2d", "messagePicUploadCenter");
    System.out.println("result: " + copyFile.result);
}

此代码编译没有问题。然而,当我运行它时,这就是我看到的错误:

enterException in thread "main" 
com.uploadcare.exceptions.UploadcareNetworkException: Network failure!
at com.uploadcare.api.RequestHelper.executeQuery(RequestHelper.java:108)
at com.uploadcare.api.Client.copyFile(Client.java:221)
at javaapplication2.UploadAPITest.main(UploadAPITest.java:25)

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [simple type, class com.uploadcare.data.FileData] from String value; no single-String constructor/factory method (through reference chain: com.uploadcare.data.CopyFileData["result"])
at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator._createFromStringFallbacks(StdValueInstantiator.java:422)
at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:298)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromString(BeanDeserializer.java:424)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:129)
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:375)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:107)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:308)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2796)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1942)
at com.uploadcare.api.RequestHelper.executeQuery(RequestHelper.java:106)
... 2 more

Java结果:1

然而,在出现错误之前,我收到了Uploadcare的回复:    {"类型":" URL""导致":" S3:// photopatch上传/ messageImgs / d5e97aca-f6d9-47ea-8c76- 1fe36d093b2d / uniqueness.jpg"}

所以我知道我已经正确连接了Uploadcare,因为图像实际上是正确的 复制。但是在副本之后,返回的JSON可能会出现格式错误或其他内容(我在这里猜测)。

有没有其他人有这个问题,或者对我有一些建议?我真的很感激。我喜欢这项服务,我认为这个问题与com.faster.jackson.databind库有很大关系。这是我在这个简单项目中使用的图片库:http://s3.postimg.org/n37i2ts5f/image.png

1 个答案:

答案 0 :(得分:1)

尝试使用

System.out.println("result: " + copyFile);

即。 copyFile代替copyFile.result,而FileData的实例没有toString()方法。