0

我正在尝试将文件从我的 android 设备上传到 Kinvey 文件存储,但我得到:

java.net.SocketTimeoutException: Read timed out.

我确实在 Kinvey 控制台上看到了上传的文件,但它已损坏,当我尝试下载时文件大小为 10mb,而原始文件大小约为 50mb。代码如下(非常接近文档):

File file = new File(Environment.getExternalStorageDirectory(), "images.zip");

FileMetaData metadata = new FileMetaData();  //create the FileMetaData object
metadata.setId("images");
metadata.setFileName("images.zip");
AccessControlList acl = new AccessControlList();
acl.setGloballyReadable(true);
metadata.setAcl(acl);

mKinveyClient.file().upload(metadata, file, new UploaderProgressListener() {

    @Override
    public void onSuccess(Void arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onFailure(Throwable arg0) {
        // TODO Auto-generated method stub
    }

    @Override
    public void progressChanged(MediaHttpUploader uploader) throws IOException {
    }
});

我在这里发布了同样的问题(Kinvey 支持论坛)。

更新

按照埃维利的回答,我做了一些测试。

  • 上传了一个文件~9mb。工作正常。可以下载和解压文件没有损坏。显示正确的文件大小。
  • 上传了一个 ~19mb 的文件,上传时没有 socketTimeoutException。上传的文件已损坏。下载时显示文件大小为10mb。
  • 以前的情况仍然代表文件大小 ~ 50mb。
4

2 回答 2

0

您是否尝试在捕获失败后重试文件上传?

请注意,50mb 是一个相当大的文件,因此您可能还需要确保设备在 wifi 上。如果您使用的是数据计划,不幸的是连接中断了,那么对此无能为力。

于 2013-12-06T19:18:04.600 回答
0

我阅读了kinvey网站的常见问题解答。这可能会帮助您:

我认为你的文件太大了。kinveyAPI 仅允许导入 20MB 以下的文件,在您的情况下,您可以将文件拆分为块或创建脚本以使用 REST API 导入。

于 2013-12-05T08:13:54.640 回答