私はS3の画像を持っています。アンドロイドで、S3の同じキーに新しい画像をアップロードしました。 s3では、イメージが正しく更新されました。しかし、私は画像のURLをグライドライブラリを使用してアンドロイドからその更新されたイメージをプルすると、私は最後のイメージファイルを取得し、更新されたものではありません。私はこの問題を解決するためにS3で何を変えるべきなのか考えていない!私は誰かが助けることを願っていますここでs3で更新されたオブジェクトを取得できませんか?
は、私はS3から私の画像を取得する方法である:私はS3に画像をアップロードする方法
Glide.with(getBaseContext()).load("https://myBucketURL/" + username + "PROFILE_IMAGE").centerCrop().into(my_imageView);
:
private void uploadToS3(String imagePath)
{
try
{
observer = transferUtility.upload(
"myBucket", /* The bucket to upload to*/
username + "PROFILE_IMAGE", /* The key for the uploaded object*/
imageStringToFile(imagePath,profileImageFile) /* The file where the data to upload exists*/
);
observer.setTransferListener(new TransferListener()
{
@Override
public void onStateChanged(int id, TransferState state) {
// do something
}
@Override
public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) {
int percentage = (int) (bytesCurrent/bytesTotal * 100);
//Display percentage transfered to user
}
@Override
public void onError(int id, Exception ex) {
// do something
Log.e(PROFILE_IMAGE,"error");
Log.d(PROFILE_IMAGE, ex.getMessage());
}
});
success = true;
Log.d(PROFILE_IMAGE,"upload success!");
} catch (IOException e)
{
e.printStackTrace();
Log.d(PROFILE_IMAGE,"upload failure");
Log.d(PROFILE_IMAGE,e.getMessage());
success = false;
}
}
private File imageStringToFile(String path, String fileName) throws IOException //returns you an image file FROM the image string
{
Bitmap bitmapImage = BitmapFactory.decodeFile(path);
//create a file to write bitmap data
File f = new File(activity.getBaseContext().getCacheDir(), fileName);
f.createNewFile();
//Convert bitmap to byte array
byte[] bitmapdata = ImageCompression.getInstant().getCompressedBitmap(path).toByteArray();
//write the bytes in file
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();
return f;
}
乾杯!
イメージを取り戻す時間がありますか?この質問を見てください:http://stackoverflow.com/questions/23786609/what-is-maximum-amazon-s3-replication-time-on-file-upload –
あなたの前にCloudFrontのようなCDNがありますか? S3のバケツ? –
ねえ、私は参照してください。私のユースケースでは、ユーザーがプロフィール画像を変更した場合です。私がやろうとしているのは、現在の写真を上書きすることですが、同じキーを保つことです。そして、プロフィール画面に戻るたびに、私はそのS3リンクに行く必要があります。遅れは本当に悪いです。彼らのイメージが(バックエンドにあっても)変化していないことが分かるからです。その遅延を減らす方法はありませんか?今でも私はアプリを閉じてもう一度開くか、10分待ってもまだ古いプロファイルの画像があるので。 – TheQ