簡體   English   中英

如何在Android SDK上使用AWS S3 PersistableDownload

[英]How to use AWS S3 PersistableDownload on Android SDK

有人能夠在AWS Android SDK上使用PersistableDownload嗎? 我一直在嘗試使用它在應用程序崩潰時恢復下載,但到目前為止沒有成功。 我認為我沒有正確理解序列化/反序列化的概念。 這是到目前為止我得到的代碼:

AmazonS3Client s3Client = getAmazonS3Client(Regions.SA_EAST_1);
TransferManager tx = new TransferManager(s3Client);

String bucket = "MyBucket";
String key = "IMG_20140915_132548.jpg";
String[] parts = key.split("/");
String fileName = parts[parts.length - 1];

final String full_path = "/storage/sdcard0/" + fileName;
File file = new File(full_path);
FileInputStream fis = null;
if(file.exists()) {
    try {
        fis = new FileInputStream(file);
        PersistableDownload persistableUpload = PersistableTransfer.deserializeFrom(fis); 
        Download meuDown = tx.resumeDownload(persistableUpload);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
}
else {
    GetObjectRequest getRequest = new GetObjectRequest(bucket, "IMG_20140915_132548.jpg");
    Download download = tx.download(getRequest, file, new S3ProgressListener() {
        @Override
        public void progressChanged(ProgressEvent arg0) {
            long transferred = arg0.getBytesTransferred();
            Log.d("AWS3", "" + transferred);
        }
        @Override
        public void onPersistableTransfer(PersistableTransfer arg0) {
            Log.d("AWS3", "Writing to file");
            File f = new File("/storage/sdcard0/resume-upload");
                FileOutputStream fos;
            try {
                if (f.exists() == false) 
                    f.createNewFile();
                fos = new FileOutputStream(f);
                arg0.serialize(fos);
                fos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

我注意到onPersistableTransfer方法僅被調用一次,所以我不知道如何將所有接收到的字節序列化到磁盤。

關於如何使PersistableDownload工作的任何建議? 我使用的是帶有真實手機(Android 4.4.4)和Eclipse的SDK 2.1。

從上面的代碼中,我看到您正在傳遞部分下載的圖像文件以繼續下載過程。

if(file.exists()) {
    try {
        fis = new FileInputStream(file);
        PersistableDownload persistableUpload = PersistableTransfer.deserializeFrom(fis); 
        Download meuDown = tx.resumeDownload(persistableUpload);
    } catch (Exception e1) {
        e1.printStackTrace();
    }
} 

這里的文件指的是部分下載的圖像文件。 您將需要傳遞文件“ / storage / sdcard0 / resume-upload”以繼續上傳。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM