图像加载和上传到 Firebase 存储无法在 android 和 firebase 控制台中显示“错误加载预览”

Posted

技术标签:

【中文标题】图像加载和上传到 Firebase 存储无法在 android 和 firebase 控制台中显示“错误加载预览”【英文标题】:Image loading and uploading to Firebase Storage not working in android and firebase console showing "error loading preview" 【发布时间】:2020-04-19 06:31:13 【问题描述】:

Firebase 存储在 Firebase 控制台中显示“错误加载预览”

最初在上传和加载过程中,它在我的应用程序中运行良好。两天后,我正在检查我的应用程序是否正常工作。

Firebase 控制台的屏幕截图:

我的图片上传代码:

if(imagePath!=null)                                   
   FirebaseStorage.getInstance().getReference("admin").child(admin.getId()).putFile(imagePath);

我的图片加载代码:

FirebaseStorage.getInstance().getReference("admin").child(image_path) .getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() 
            @Override
            public void onSuccess(Uri uri) 
                Glide.with(getApplicationContext()).load(uri).centerCrop().into(profileImage);
            
        );

如果您知道,请帮我解决这个问题。 感谢 Firebase 专家的帮助

【问题讨论】:

请仅使用android-studio 标签来回答有关 Android Studio IDE 本身的问题。对于一般的 Android 编程问题,请使用android 标签。 好的。并感谢您给我指导。 我也一样。 Error loading preview。两天前它工作得很好。有什么建议吗? @FrankvanPuffelen 我现在正在开发的应用程序仍然无法正常工作。但完美适用于现有应用程序。我不知道为什么。 与今天相同的问题,但我在Switzerland - 所以这似乎不仅仅发生在孟加拉国。 【参考方案1】:

我今天刚刚向 Firebase 团队发送了有关此问题的电子邮件。 他们刚刚在半小时前回复了我的电子邮件。

我的电子邮件

Firebase 团队回复

编辑:使用 *** 来解决这个问题。

【讨论】:

太糟糕了。用户不会对使用 *** 感兴趣。【参考方案2】:

您说,您的项目两天前正在运行。您的图片已上传,如我所见,但未加载。这意味着代码没有问题。 可能是 firebase 更新了它的版本,这就是它产生 bug 的原因。您可以关注更新的文档。在我之前的 ios 项目中,我遇到了 firebase 默认 authUI 的相同类型的错误,因为 firebase 有某种类型的更新,所以他们在更新的文档中更改了一些说明。我还要求更新 android studio 及其插件,如果你还没有迁移到 androidX。迁移后你已经更改了 xml 设计代码(如依赖项引用等),否则它将导致应用程序崩溃

这是用于 Android 上传文件的 firebase 文档中的示例 java 代码

必须创建引用

// Create a storage reference from our app
StorageReference storageRef = storage.getReference();

// Create a reference to "mountains.jpg"
StorageReference mountainsRef = storageRef.child("mountains.jpg");

// Create a reference to 'images/mountains.jpg'
StorageReference mountainImagesRef = storageRef.child("images/mountains.jpg");

// While the file names are the same, the references point to different files
mountainsRef.getName().equals(mountainImagesRef.getName());    // true
mountainsRef.getPath().equals(mountainImagesRef.getPath());    // false

然后从本地存储上传图片

Uri file = Uri.fromFile(new File("path/to/images/rivers.jpg"));
StorageReference riversRef = storageRef.child("images/"+file.getLastPathSegment());
uploadTask = riversRef.putFile(file);

// Register observers to listen for when the download is done or if it fails
uploadTask.addOnFailureListener(new OnFailureListener() 
    @Override
    public void onFailure(@NonNull Exception exception) 
        // Handle unsuccessful uploads
    
).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() 
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) 
        // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
        // ...
    
);

用于下载图片

创建参考

// Create a storage reference from our app
StorageReference storageRef = storage.getReference();

// Create a reference with an initial file path and name
StorageReference pathReference = storageRef.child("images/stars.jpg");

// Create a reference to a file from a Google Cloud Storage URI
StorageReference gsReference = storage.getReferenceFromUrl("gs://bucket/images/stars.jpg");

// Create a reference from an HTTPS URL
// Note that in the URL, characters are URL escaped!
StorageReference httpsReference = storage.getReferenceFromUrl("https://firebasestorage.googleapis.com/b/bucket/o/images%20stars.jpg");

下载图片到本地文件

islandRef = storageRef.child("images/island.jpg");

File localFile = File.createTempFile("images", "jpg");

islandRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() 
    @Override
    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) 
        // Local temp file has been created
    
).addOnFailureListener(new OnFailureListener() 
    @Override
    public void onFailure(@NonNull Exception exception) 
        // Handle any errors
    
);

更多详情 https://firebase.google.com/docs/storage/android/upload-files https://firebase.google.com/docs/storage/android/download-files

【讨论】:

我正在尝试但仍然无法正常工作,它没有执行任何成功或失败功能 没关系,可能是google存储服务器的问题。 firebase.google.com/support/troubleshooter/contact 。如果可能,请直接与他们联系。请在发送消息时具体说明。选择电子邮件主题作为错误报告。 各位,我也面临同样的问题。完全工作的项目已经解析了除图像之外的所有信息。两天前它运行良好。现在图像甚至没有显示在存储控制台上。总是收到Error loading preview。请帮忙!【参考方案3】:

这是Bangladesh的穆宾 我们名为“Ostad”的应用程序已在 Google Play Store 启动并运行了 4 个月。而且,我们的用户资料图片托管在Firebase Storage 中。从今天开始,用户图像突然没有加载到应用程序中。在检查了FirebaseGoogle Cloud Platform (GCP) 中的所有内容后,我意识到这可能是Mumbai Region 中的Google Cloud 服务器的问题。而且,我们等待它是否自动修复。 我们的猜测是正确的。大约 20 分钟前,图像正在加载。 现在,一切正常。 我认为,您也面临同样问题的麻烦。 只是等着看它是否会再次起作用。

编辑:使用 *** 来解决这个问题。

【讨论】:

我希望它会起作用,因为您告诉我昨天正在加载图像。这意味着你的代码没问题。现在就等谷歌修复他们的存储服务器。 我现在正在开发的应用程序仍然无法正常工作。但完美适用于现有应用程序。我不知道为什么。 另外 2 位开发人员刚刚就这个问题亲自联系过。他们也面临着同样的问题。他们还在孟买地区选择了他们的 firebase 服务器。我们也再次面临这个问题。有时它可以工作,并且大部分时间存储服务器都在关闭。我们现在所能做的就是,我们可以通过我们的服务器区域向 Firebase 支持团队发送电子邮件告知此问题。 Firebase 支持联系人:firebase.google.com/support/troubleshooter/contact

以上是关于图像加载和上传到 Firebase 存储无法在 android 和 firebase 控制台中显示“错误加载预览”的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 存储图像无法正确上传

无法从 python 服务器将图像上传到 Firebase 存储

Flutter web - 无法将图像上传到 Firebase 存储

Kotlin - 无法将图像上传到 Firebase 存储

无法使用 firebase 功能将图像上传到 firebase 存储

无法从颤振网络将图像上传到 Firebase 存储