在我的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