UploadTask.TaskSnapshot需要上传URL

时间:2018-08-01 10:34:48

标签: android

在我的android studio项目中,我像这样在Firebase Firestore上上传照片:

 final StorageReference filePath = mStorageReference.child("post_images").child(randomName+".jpg");
                filePath.putFile(postImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
                        filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(final Uri uri) {

                                final String downloadUri = uri.toString();

字符串downloadUri可以...功能!!! 之后,我需要缩略图,因此我在onSuccess()中使用了以下代码:

File newImageFile = new File(postImageUri.getPath());
                                try {
                                    compressedImageFile = new Compressor(NewPostActivity.this) 
                                            .setMaxHeight(100)
                                            .setMaxWidth(200)
                                            .setQuality(2)
                                            .compressToBitmap(newImageFile); 

                                } catch (IOException e) {
                                    e.printStackTrace();
                                }

                                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                                compressedImageFile.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                                byte[] thumbData = baos.toByteArray();

图像文件在thumbData中,我放在存储上: 我不能使用StorageReference,因为putBytes()需要一个字节[](我拥有)并返回一个UploadTask,可用于管理和监视上传状态!

final UploadTask uploadTask = mStorageReference.child("post_images/thumbs") 
                                        .child(randomName + ".jpg") 
                                        .putBytes(thumbData); 

图像以正确的路径存储在存储中,但是现在我需要该图像的downloadURL ...我阅读了所有UploadTask.TaskSnapshot指南,然后尝试了以下代码:

uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                                    @Override
                                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {

                                        //StorageMetadata metadata = taskSnapshot.getMetadata().getPath()
                                        String urlTask = taskSnapshot.getMetadata().getCustomMetadata(downloadUri);

                                         // DONT FUNTIONS




                                    }
                                }).addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {

                                        // Error Handling
                                    }
                                });

                            }


                        }).addOnFailureListener(new OnFailureListener() {     // CLOSE FIRST addOnSuccessListener
                            @Override
                            public void onFailure(@NonNull Exception e) {

                                String error = e.getMessage();
                                Toast.makeText(NewPostActivity.this, "IMAGE STORAGE Error: " + error, Toast.LENGTH_LONG).show();
                                newPostProgress.setVisibility(View.INVISIBLE);
                            }
                        });

结论:我没有我用UploadTask上传的图像的downloadURL,我尝试了阅读指南的所有可能性!

如果有人可以帮助我,我将非常感激

francyfre

0 个答案:

没有答案