Kinvey Android SDK - 文件上传 - SocketTimeoutException:读取超时

时间:2013-12-05 07:08:14

标签: android file upload socket-timeout-exception kinvey

我正在尝试将文件从我的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 {
    }
});

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

更新

根据ewilly的回答,我做了一些测试。

  • 上传文件〜9mb。工作良好。可以下载和解压缩文件没有损坏。显示正确的文件大小。
  • 上传文件~19mb,上传时不带socketTimeoutException。 上传的文件已损坏。下载时显示文件大小为10mb。
  • 以前的案例仍然代表文件大小~50mb。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您是否尝试在捕获故障后重试文件上传?

请注意,50mb是一个相当大的文件,因此您可能还需要确保设备处于wifi状态。如果您正在使用数据计划,并且不幸的是连接中断了,那么就没有什么可以做的了。