3

I'm having trouble uploading an image to firebase cloud storage. I get no errors/warnings, the upload just doesn't seem to work! Both the Toasts are not showing either, the app just sits idle and after a while shows "connection refused.." in the logcat.

Here's the code snippet :

    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.
                    // ...




                }

            });


        }

dependencies used:

    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'

manifest.xml:

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

logcat:

    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)

KSA
  • 91
  • 1
  • 4
  • This won't work: `Uri downloadUri = filepath.getDownloadUrl().getResult();`. For the proper code see the [documentation](https://firebase.google.com/docs/storage/android/download-files#download_data_via_url) or https://stackoverflow.com/questions/51056397/how-to-use-getdownloadurl-in-recent-versions – Frank van Puffelen May 09 '20 at 22:36
  • If you think the message in the logcat output is related to the problem, include the exact message and some message around it in your question (there's an edit link right under it). I'd also recommend replacing your toasts with `Log.i()` as they're much easier to then also include in your question. – Frank van Puffelen May 09 '20 at 22:37

0 Answers0