每当我连续上传到Firebase时,我上传的最新照片将替换所有其他链接。这是一个奇怪的错误,很难相信。
获取结果图片
String filePath = Environment.getExternalStorageDirectory() + "/image2.jpg";
selectedImageUri = Uri.parse(filePath);
imageView.setImageURI(selectedImageUri);
ImageCompression imageCompression = new ImageCompression(this);
String oath = imageCompression.compressImage(filePath);
uriN = Uri.fromFile(new File(oath));
上传图片
private void fabSend(){
if (uriN!=null){
final StorageReference photoRef = storageRef.child(selectedImageUri.getLastPathSegment() + ".jpg");
photoRef.putFile(uriN).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Uri downloadUrl = taskSnapshot.getDownloadUrl();
image = (downloadUrl.toString());
postRef.push().setValue(new myAdapter(image,
description ,
user.getDisplayName())).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
progress.setVisibility(View.GONE);
imageView.setImageBitmap(null);
uriN = null;
fab.setVisibility(View.VISIBLE);
}
});
}
});}
事实是,如果我退出活动并再次重新启动它,则不会发生这种情况。我尝试过使用reCreate(),但同样的情况也是如此。
所有链接都不同ie different upload tokens and different images
但是上传的最后一张图片是为所有链接显示的图片。
答案 0 :(得分:0)
那是因为你说这一行中的所有图像都必须具有相同的名称(image2.jpg):
String filePath = Environment.getExternalStorageDirectory() + "/image2.jpg";
您应该做的是从Uri
中的data
参数获取onActivityResult()
(我假设您正在获取图像结果:
selectedImageUri = data.getData();
imageView.setImageURI(selectedImageUri);
ImageCompression imageCompression = new ImageCompression(this);
String oath = imageCompression.compressImage(filePath);
uriN = Uri.fromFile(new File(oath));
修改:您可以在将名称发送到Firebase存储之前更改名称,也可以添加日期和时间。像这样:
String newName = new SimpleDateFormat("yyyy-MM-dd-HHmm").format(new Date());
final StorageReference photoRef = storageRef.child("IMG-"+newName+ ".jpg");