从Firebase获取图像,而无需通过手机上传

时间:2017-03-08 07:25:51

标签: android firebase firebase-storage

这是我第一次使用Firebase

我想用"特别优惠"

创建一个选项

它的工作方式就像我将通过浏览器上传图像,我的应用程序将下载它。我创建了一些代码,但是当我尝试获取图像时,我得到了

一些事实:

  • 在firebase中我有子文件夹提供
  • 我的照片名为Capture.png
 E/StorageException: StorageException has occurred.
                    An unknown error occurred, please check the HTTP result code and inner exception for server response.
                     Code: -13000 HttpResult: 0
E/StorageException: /image/png (No such file or directory)
                    java.io.FileNotFoundException: /image/png (No such file or directory)
                        at java.io.FileInputStream.open(Native Method)
                        at java.io.FileInputStream.<init>(FileInputStream.java:146)
                        at java.io.FileInputStream.<init>(FileInputStream.java:99)
                        at android.content.ContentResolver.openInputStream(ContentResolver.java:702)
                        at com.google.firebase.storage.UploadTask.<init>(Unknown Source)
                        at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
                        at com.example.andrzej.forexapp.activities.fragments.SettingsFragment.configureSettingsMenus(SettingsFragment.java:147)
                        at com.example.andrzej.forexapp.activities.fragments.SettingsFragment.onCreateView(SettingsFragment.java:82)
                        at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
                        at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
                        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
                        at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
                        at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
                        at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
                        at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
                        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
                        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710)
                        at android.os.Handler.handleCallback(Handler.java:751)
                        at android.os.Handler.dispatchMessage(Handler.java:95)
                        at android.os.Looper.loop(Looper.java:154)
                        at android.app.ActivityThread.main(ActivityThread.java:6119)
                        at java.lang.reflect.Method.invoke(Native Method)
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
E/StorageException: StorageException has occurred.

这是我的代码

private StorageReference storageReference;
storageReference = FirebaseStorage.getInstance().getReference();
imageSettings.setVisibility(View.VISIBLE);
                StorageReference islandRef = storageReference.child("offer/Capture.PNG");

                Uri file = Uri.fromFile(new File("image/png"));
                    islandRef.putFile(file).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                            Uri downloadFile = taskSnapshot.getDownloadUrl();
                            Picasso.with(getContext()).load(downloadFile).fit().centerCrop().into(imageSettings);
                        }
                    });

任何帮助approciate

编辑:

我尝试通过以下代码获取图片:

 Glide.with(this)
                    .using(new FirebaseImageLoader())
                    .load(storageReference)
                    .into(imageSettings);

但我有一个例外:

E/StorageException: null
                android.os.RemoteException
                    at com.google.android.gms.internal.zzbre.<init>(Unknown Source)
                    at com.google.android.gms.internal.zzbre.zzj(Unknown Source)
                    at com.google.firebase.storage.StorageReference.zzaaN(Unknown Source)
                    at com.google.firebase.storage.StreamDownloadTask.run(Unknown Source)
                    at com.google.firebase.storage.StorageTask$8.run(Unknown Source)
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                    at java.lang.Thread.run(Thread.java:761)

我尝试了所有,我得到了错误:

    03-08 09:37:17.004 18382-19615/com.example.andrzej.forexapp E/NetworkRqFactoryProxy: NetworkRequestFactoryProxy failed with a RemoteException:
                                                                                     com.google.android.gms.dynamite.DynamiteModule$zza: No acceptable module found. Local version is 0 and remote version is 0.
                                                                                         at com.google.android.gms.dynamite.DynamiteModule.zza(Unknown Source)
                                                                                         at com.google.android.gms.dynamite.DynamiteModule.zza(Unknown Source)
                                                                                         at com.google.android.gms.internal.zzbre.<init>(Unknown Source)
                                                                                         at com.google.android.gms.internal.zzbre.zzj(Unknown Source)
                                                                                         at com.google.firebase.storage.StorageReference.zzaaN(Unknown Source)
                                                                                         at com.google.firebase.storage.StreamDownloadTask.run(Unknown Source)
                                                                                         at com.google.firebase.storage.StorageTask$8.run(Unknown Source)
                                                                                         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                                         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                                         at java.lang.Thread.run(Thread.java:761)
03-08 09:37:17.005 18382-19615/com.example.andrzej.forexapp E/StreamDownloadTask: Unable to create firebase storage network request.
                                                                                  android.os.RemoteException
                                                                                      at com.google.android.gms.internal.zzbre.<init>(Unknown Source)
                                                                                      at com.google.android.gms.internal.zzbre.zzj(Unknown Source)
                                                                                      at com.google.firebase.storage.StorageReference.zzaaN(Unknown Source)
                                                                                      at com.google.firebase.storage.StreamDownloadTask.run(Unknown Source)
                                                                                      at com.google.firebase.storage.StorageTask$8.run(Unknown Source)
                                                                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                                      at java.lang.Thread.run(Thread.java:761)
03-08 09:37:17.005 18382-19615/com.example.andrzej.forexapp E/StorageException: StorageException has occurred.
                                                                                An unknown error occurred, please check the HTTP result code and inner exception for server response.
                                                                                 Code: -13000 HttpResult: 0
03-08 09:37:17.005 18382-19615/com.example.andrzej.forexapp E/StorageException: null
                                                                                android.os.RemoteException
                                                                                    at com.google.android.gms.internal.zzbre.<init>(Unknown Source)
                                                                                    at com.google.android.gms.internal.zzbre.zzj(Unknown Source)
                                                                                    at com.google.firebase.storage.StorageReference.zzaaN(Unknown Source)
                                                                                    at com.google.firebase.storage.StreamDownloadTask.run(Unknown Source)
                                                                                    at com.google.firebase.storage.StorageTask$8.run(Unknown Source)
                                                                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                                    at java.lang.Thread.run(Thread.java:761)
03-08 09:37:17.005 18382-19615/com.example.andrzej.forexapp E/StorageException: StorageException has occurred.
                                                                                An unknown error occurred, please check the HTTP result code and inner exception for server response.
                                                                                 Code: -13000 HttpResult: 0
03-08 09:37:17.005 18382-19615/com.example.andrzej.forexapp E/StorageException: null
                                                                                android.os.RemoteException
                                                                                    at com.google.android.gms.internal.zzbre.<init>(Unknown Source)
                                                                                    at com.google.android.gms.internal.zzbre.zzj(Unknown Source)
                                                                                    at com.google.firebase.storage.StorageReference.zzaaN(Unknown Source)
                                                                                    at com.google.firebase.storage.StreamDownloadTask.run(Unknown Source)
                                                                                    at com.google.firebase.storage.StorageTask$8.run(Unknown Source)
                                                                                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                                                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                                                    at java.lang.Thread.run(Thread.java:761)
03-08 09:37:17.644 18382-18492/com.example.andrzej.forexapp E/EGL_emulation: tid 18492: eglSurfaceAttrib(1174): error 0x3009 (EGL_BAD_MATCH)

1 个答案:

答案 0 :(得分:3)

根据你的代码片段,你传递主存储引用(即storageReference)而不是图像文件引用(ieislandRef)

StorageReference storageReference =
    FirebaseStorage.getInstance().getReference();

StorageReference islandRef =
    storageReference.child("offer/Capture.PNG");

Glide.with(this)
    .using(new FirebaseImageLoader())
    .load(islandRef)
    .into(imageSettings);