gpt4 book ai didi

android - 成功上传到S3后删除文件

转载 作者:太空狗 更新时间:2023-10-29 14:00:19 25 4
gpt4 key购买 nike

我想上传一个文件到S3,上传成功后删除。我正在使用 TransferUtility 作为

for(final File p:photos){
String key = getKey(p.getName());
TransferObserver observer = getTransferUtility().upload(S3_BUCKET,key,p);
observer.setTransferListener(new TransferListener() {
@Override
public void onStateChanged(int id, TransferState state) {
if(TransferState.COMPLETED == state){
p.delete();
}
}

@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {

}

@Override
public void onError(int id, Exception ex) {

}
});

}

由于上传是异步的,对 onStateChanged 的调用必然与 for 循环异相。那么如何确保每次都删除正确的文件呢?

更新

一种可行的方法是,如果我可以从 onStateChanged 中获取正确的 observer。然后我可以做

@Override
public void onStateChanged(int id, TransferState state) {
if(TransferState.COMPLETED == state){
Observer obs = getParentObserver();//similar to a Fragment's getActivity() or getContext()
File file = new File(obs.getAbsoluteFilePath());
file.delete();
}
}

请注意,以下内容将不起作用,因为 id 可能永远不会匹配

@Override
public void onStateChanged(int id, TransferState state) {
if (TransferState.COMPLETED == state) {
if (observer.getId() == id) {
String filePath = observer.getAbsoluteFilePath();
File file = new File(observer.getAbsoluteFilePath());
}
}
}

最佳答案

您可以通过 id 检索传输。

String path = getTransferUtility().getTransferById(id).getAbsoluteFilePath();
new File(path).delete();
getTransferUtility().delete(id);

关于android - 成功上传到S3后删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36068168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com