如何在 Firebase 中添加图像列表?
Posted
技术标签:
【中文标题】如何在 Firebase 中添加图像列表?【英文标题】:How to add image list in Firebase? 【发布时间】:2020-06-23 06:54:54 【问题描述】:我想在 firebase 中上传图片列表,但在 firebase 上传成功监听器中没有在 OnSuccessListener 上添加图片列表。
试过了 我在它工作的 add onSuccessListener 类之外添加了字符串值,并且我尝试记录它也工作的 url。但它没有在 OnSuccessListener 的 arrayList 中添加字符串值。 谢谢你的帮助。
主要代码
public void UploadImage()
if (isUserSelected != null)
progressDialog.setTitle("Image is Uploading...");
Log.d(TAG, "UploadImage: uploading");
progressDialog.show();
Log.d(TAG, "UploadImage: after progress bar");
for (int i = 0; i < multipleFileUploads.size(); i++)
Log.d(TAG, "UploadImage: " + i);
final StorageReference storageReference2 = storageReference.child(System.currentTimeMillis() + "." + GetFileExtension(multipleFileUploads.get(i)));
storageReference2.putFile(multipleFileUploads.get(i))
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>()
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot)
Log.d(TAG, "onSuccess: ");
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Image Uploaded Successfully ", Toast.LENGTH_LONG).show();
storageReference2.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>()
@Override
public void onSuccess(Uri uri)
Log.d(TAG, "onSuccess: uri " + uri.toString());
imagelist.add(uri.toString());
);
).addOnFailureListener(new OnFailureListener()
@Override
public void onFailure(@NonNull Exception e)
Log.d(TAG, "onFailure: " + e.getMessage());
).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>()
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot)
Log.d(TAG, "onProgress: " + taskSnapshot.getBytesTransferred());
Log.d(TAG, "onProgress: " + taskSnapshot.getTotalByteCount());
).addOnCompleteListener(new OnCompleteListener<UploadTask.TaskSnapshot>()
@Override
public void onComplete(@NonNull Task<UploadTask.TaskSnapshot> task)
Log.d(TAG, "onComplete: " + task.getException());
);
imageList.add("custom list");
uploadinfo imageUploadInfo = new uploadinfo(txtdata.getText().toString(), txtData1.getText().toString(), imageList.toString());
String ImageUploadId = databaseReference.push().getKey();
databaseReference.child(ImageUploadId).setValue(imageUploadInfo);
else
Toast.makeText(uploadimg1.this, "Please Select Image or Add Image Name", Toast.LENGTH_LONG).show();
Firebase 的 POJO 代码
public class uploadinfo
public String imageName;
public String imageName1;
public String imageListString;
public uploadinfo(String imageName, String imageName1, String imageListString)
this.imageName = imageName;
this.imageName1 = imageName1;
this.imageListString = imageListString;
public String getImageName()
return imageName;
public void setImageName(String imageName)
this.imageName = imageName;
public String getImageName1()
return imageName1;
public void setImageName1(String imageName1)
this.imageName1 = imageName1;
public String getImageListString()
return imageListString;
public void setImageListString(String imageListString)
this.imageListString = imageListString;
在 Firebase 中
【问题讨论】:
logcat 里有没有打印出来的东西? 在logcat中显示文件的uri,但它没有添加到arraylist中。 您将 url 添加到(任何)arraylist 的哪一行? @npk 我更新了我的代码,因为我一直在调试我的代码。谢谢。它在下面 getDownloadUrl().addOnSuccessListener(); 现在可以用了吗? 【参考方案1】:问题可能出在您的模型中。在 firebase 中,顺序为 imageListString、imageName、imageName1。但是在构造函数中的模型中,你得到了 String imageName、String imageName1、String imageListString。同时,我不确定在将其发送到 Firebase 之前如何生成您创建的列表。
【讨论】:
【参考方案2】:你可以试试这个方法
UploadTask uploadTask = storageReference2.putFile(multipleFileUploads.get(i));
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>()
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception
if (!task.isSuccessful())
throw task.getException();
// Continue with the task to get the download URL
return ref.getDownloadUrl();
).addOnCompleteListener(new OnCompleteListener<Uri>()
@Override
public void onComplete(@NonNull Task<Uri> task)
if (task.isSuccessful())
Uri downloadUri = task.getResult();
imagelist.add(downloadUri.toString());
else
// Handle failures
// ...
);
【讨论】:
以上是关于如何在 Firebase 中添加图像列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GridView 中显示 Firebase 存储图像
如何在将照片上传到 Firebase 存储时将日期或时间等用户图像详细信息添加到文件名?