简体   繁体   中英

Android FirebaseStorage can't find file

This is the function that I have:

 public static void sendLogFileToFirebase(Context context, File file, final CrudStateCallback back){
    UserRecord user = UserRecord.getMyUser(context);
    Calendar calendar = Calendar.getInstance();
    FirebaseStorage storage = FirebaseStorage.getInstance();
    StorageReference storageRef = storage.getReference();
    String folder = "users/";
    final StorageReference logsRef = storageRef.child(folder + user.getId() + "/logs/" + calendar.get(Calendar.YEAR) + "_" + (calendar.get(Calendar.MONTH) + 1) + "_" + calendar.get(Calendar.DAY_OF_MONTH) + "/"
            + calendar.get(Calendar.HOUR) + calendar.get(Calendar.MINUTE) + calendar.get(Calendar.SECOND) + ".zip");
    String[] files = new String[1];
    files[0] = file.getAbsolutePath();
    Compress compress = new Compress(files, Environment.getExternalStorageDirectory() + "/Passenger/log.zip");
    final File fileLog = new File(Environment.getExternalStorageDirectory() + "/Passenger/log.zip");
    compress.zip(new CrudStateCallback() {
        @Override
        public void onResponse(String string) {
            Log.i("","path will be:" + logsRef.getPath());
            logsRef.putFile(Uri.parse(fileLog.getAbsolutePath()));
            if(back != null)
                back.onResponse("");
        }
    });
}

And when it enters the callback from the compress method, It gets an exception at this line:

logsRef.putFile(Uri.parse(fileLog.getAbsolutePath()));

Error:

 04-04 13:47:53.659: W/UploadTask(10206): could not retrieve file size for upload /storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.659: W/UploadTask(10206): java.io.FileNotFoundException: No content provider: /storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.659: W/UploadTask(10206):   at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1090)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:795)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.content.ContentResolver.openFileDescriptor(ContentResolver.java:749)
 04-04 13:47:53.659: W/UploadTask(10206):   at com.google.firebase.storage.UploadTask.<init>(Unknown Source)
 04-04 13:47:53.659: W/UploadTask(10206):   at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
 04-04 13:47:53.659: W/UploadTask(10206):   at nl.hgrams.passenger.utils.Utils$12.onResponse(Utils.java:765)
 04-04 13:47:53.659: W/UploadTask(10206):   at nl.hgrams.passenger.utils.Compress.zip(Compress.java:51)
 04-04 13:47:53.659: W/UploadTask(10206):   at nl.hgrams.passenger.utils.Utils.sendLogFileToFirebase(Utils.java:761)
 04-04 13:47:53.659: W/UploadTask(10206):   at nl.hgrams.passenger.activities.PSAboutActivity.onCreate(PSAboutActivity.java:81)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.Activity.performCreate(Activity.java:6251)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.ActivityThread.-wrap11(ActivityThread.java)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)     
 04-04 13:47:53.659: W/UploadTask(10206):   at android.os.Handler.dispatchMessage(Handler.java:102)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.os.Looper.loop(Looper.java:148)
 04-04 13:47:53.659: W/UploadTask(10206):   at android.app.ActivityThread.main(ActivityThread.java:5417)
 04-04 13:47:53.659: W/UploadTask(10206):   at java.lang.reflect.Method.invoke(Native Method)
 04-04 13:47:53.659: W/UploadTask(10206):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)     
 04-04 13:47:53.659: W/UploadTask(10206):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 04-04 13:47:53.660: E/UploadTask(10206): could not locate file for uploading:/storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.682: W/Binder_10(4347): type=1400 audit(0.0:13319): avc: denied { ioctl } for path="socket:[1194698]" dev="sockfs" ino=1194698 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
 04-04 13:47:53.682: W/Binder_10(4347): type=1400 audit(0.0:13320): avc: denied { ioctl } for path="socket:[1194698]" dev="sockfs" ino=1194698 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
 04-04 13:47:53.676: E/StorageException(10206): StorageException has occurred.
 04-04 13:47:53.676: E/StorageException(10206): An unknown error occurred, please check the HTTP result code and inner exception for server response.
 04-04 13:47:53.676: E/StorageException(10206):  Code: -13000 HttpResult: 0
 04-04 13:47:53.678: E/StorageException(10206): No content provider: /storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.678: E/StorageException(10206): java.io.FileNotFoundException: No content provider: /storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.678: E/StorageException(10206):     at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1090)
 04-04 13:47:53.678: E/StorageException(10206):     at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
 04-04 13:47:53.678: E/StorageException(10206):     at android.content.ContentResolver.openInputStream(ContentResolver.java:662)
 04-04 13:47:53.678: E/StorageException(10206):     at com.google.firebase.storage.UploadTask.<init>(Unknown Source)
 04-04 13:47:53.678: E/StorageException(10206):     at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
 04-04 13:47:53.678: E/StorageException(10206):     at nl.hgrams.passenger.utils.Utils$12.onResponse(Utils.java:765)
 04-04 13:47:53.678: E/StorageException(10206):     at nl.hgrams.passenger.utils.Compress.zip(Compress.java:51)
 04-04 13:47:53.678: E/StorageException(10206):     at nl.hgrams.passenger.utils.Utils.sendLogFileToFirebase(Utils.java:761)
 04-04 13:47:53.678: E/StorageException(10206):     at nl.hgrams.passenger.activities.PSAboutActivity.onCreate(PSAboutActivity.java:81)
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.Activity.performCreate(Activity.java:6251)     
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.ActivityThread.-wrap11(ActivityThread.java)
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
 04-04 13:47:53.678: E/StorageException(10206):     at android.os.Handler.dispatchMessage(Handler.java:102)
 04-04 13:47:53.678: E/StorageException(10206):     at android.os.Looper.loop(Looper.java:148)
 04-04 13:47:53.678: E/StorageException(10206):     at android.app.ActivityThread.main(ActivityThread.java:5417)
 04-04 13:47:53.678: E/StorageException(10206):     at java.lang.reflect.Method.invoke(Native Method)
 04-04 13:47:53.678: E/StorageException(10206):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
 04-04 13:47:53.678: E/StorageException(10206):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 04-04 13:47:53.695: E/StorageException(10206): StorageException has occurred.
 04-04 13:47:53.695: E/StorageException(10206): An unknown error occurred, please check the HTTP result code and inner exception for server response.
 04-04 13:47:53.695: E/StorageException(10206):  Code: -13000 HttpResult: 0
 04-04 13:47:53.695: E/StorageException(10206): No content provider: /storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.695: E/StorageException(10206): java.io.FileNotFoundException: No content provider: /storage/emulated/0/Passenger/log.zip
 04-04 13:47:53.695: E/StorageException(10206):     at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1090)     
 04-04 13:47:53.695: E/StorageException(10206):     at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:942)
 04-04 13:47:53.695: E/StorageException(10206):     at android.content.ContentResolver.openInputStream(ContentResolver.java:662)
 04-04 13:47:53.695: E/StorageException(10206):     at com.google.firebase.storage.UploadTask.<init>(Unknown Source)
 04-04 13:47:53.695: E/StorageException(10206):     at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
 04-04 13:47:53.695: E/StorageException(10206):     at nl.hgrams.passenger.utils.Utils$12.onResponse(Utils.java:765)
 04-04 13:47:53.695: E/StorageException(10206):     at nl.hgrams.passenger.utils.Compress.zip(Compress.java:51)
 04-04 13:47:53.695: E/StorageException(10206):     at nl.hgrams.passenger.utils.Utils.sendLogFileToFirebase(Utils.java:761)
 04-04 13:47:53.695: E/StorageException(10206):     at nl.hgrams.passenger.activities.PSAboutActivity.onCreate(PSAboutActivity.java:81)
 04-04 13:47:53.695: E/StorageException(10206):     at android.app.Activity.performCreate(Activity.java:6251)
 04-04 13:47:53.695: E/StorageException(10206):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
 04-04 13:47:53.695: E/StorageException(10206):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)

Why does this happen? I checked and the file exists in my folder. I tried also doing directly logsRef.putFile(Uri.parse(Environment.getExternalStorageDirectory() + "/Passenger/log.zip")); But same thing happens. Any ideeas?

This worked:

 InputStream stream = new FileInputStream(fileLog);
 UploadTask uploadTask = logsRef.putStream(stream);

Instead of trying to upload directly the file

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM