首页 > 解决方案 > 上传图片在 Firebase 云存储中不起作用

问题描述

我无法将图像上传到 Firebase 云存储。我没有收到任何错误/警告,上传似乎不起作用!两个 Toast 都没有显示,应用程序只是处于空闲状态,过了一会儿在 logcat 中显示“连接被拒绝..”。

这是代码片段:

    private Uri fileUri;
    private StorageReference storageReference;
    private UploadTask uploadTask;
    private String myurl = "";


    private void SelectImage()
    {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_GET_CONTENT);
        intent.setType("image/*");
        startActivityForResult(Intent.createChooser(intent, "Select Image"), 420);
    }



    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode==420 && resultCode==RESULT_OK && data!=null && data.getData()!=null)
        {


            fileUri = data.getData();
            storageReference = FirebaseStorage.getInstance().getReference().child("Image Files");
            final StorageReference filepath = storageReference.child(nameString+".jpg");



            uploadTask = filepath.putFile(fileUri);
            uploadTask.addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception exception) {
                    Toast.makeText(MessageActivity.this, "Failed", Toast.LENGTH_SHORT).show();
                    // Handle unsuccessful uploads
                }
            }).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    Toast.makeText(MessageActivity.this, "Uploaded Successfully!", Toast.LENGTH_SHORT).show();
                    // taskSnapshot.getMetadata() contains file metadata such as size, content-type, etc.
                    // ...




                }

            });


        }

使用的依赖项:

    implementation 'com.google.firebase:firebase-auth:16.0.1'
    implementation 'com.google.firebase:firebase-database:16.0.1'
    implementation 'com.google.firebase:firebase-storage:16.0.1'
    implementation 'com.google.firebase:firebase-analytics:16.0.1'

清单.xml:

    <uses-permission android:name="android.permission.INTERNET"/>

日志猫:

    2020-05-10 04:39:04.568 2441-3863/com.example.myproject W/NetworkRequest: error sending network request POST https://firebasestorage.googleapis.com/v0/b/myproject.appspot.com/o
    java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:113)
        at com.android.okhttp.Connection.connectSocket(Connection.java:196)
        at com.android.okhttp.Connection.connect(Connection.java:172)
        at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
        at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)
        at bmh.b(:com.google.android.gms.dynamite_dynamitemodulesc@16089052@16.0.89 (040700-239467275):60)
        at bmh.a(:com.google.android.gms.dynamite_dynamitemodulesc@16089052@16.0.89 (040700-239467275):93)
        at bmc.a(:com.google.android.gms.dynamite_dynamitemodulesc@16089052@16.0.89 (040700-239467275):35)
        at rj.onTransact(:com.google.android.gms.dynamite_dynamitemodulesc@16089052@16.0.89 (040700-239467275):4)
        at android.os.Binder.transact(Binder.java:499)
        at com.google.android.gms.internal.firebase_storage.zza.transactAndReadExceptionReturnVoid(Unknown Source)
        at com.google.android.gms.internal.firebase_storage.zzm.zze(Unknown Source)
        at com.google.android.gms.internal.firebase_storage.zzq.zza(Unknown Source)
        at com.google.android.gms.internal.firebase_storage.zzf.zza(Unknown Source)
        at com.google.firebase.storage.UploadTask.zzc(Unknown Source)
        at com.google.firebase.storage.UploadTask.run(Unknown Source)
        at com.google.firebase.storage.StorageTask.zzl(Unknown Source)
        at com.google.firebase.storage.zzx.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)

标签: javaandroidfirebasefirebase-storage

解决方案


推荐阅读