Firebase在存储上复制新上传

时间:2018-01-16 15:02:56

标签: java android firebase firebase-realtime-database firebase-storage

每当我连续上传到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 但是上传的最后一张图片是为所有链接显示的图片。

1 个答案:

答案 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");