无法从我的应用程序上传图像到Firebase存储。

huangapple 未分类评论52阅读模式
英文:

Not able to upload image to firebase storage from my App

问题

public class UploadActivity extends AppCompatActivity {
    StorageTask uploadTask;
    Uri path;
    StorageReference photoStorage;
    DatabaseReference photoRef;
    ImageView passportsize_photo;
    Button upload_photo, chose_photo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload);

        chose_photo = findViewById(R.id.choose_photo);
        passportsize_photo = findViewById(R.id.passportsize_photo);
        upload_photo = findViewById(R.id.upload_photo);

        photoStorage = FirebaseStorage.getInstance().getReference("Photos");
        photoRef = FirebaseDatabase.getInstance().getReference("Photos");

        upload_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (uploadTask != null && uploadTask.isInProgress()) {
                    Toast.makeText(UploadActivity.this, "Upload in progress", Toast.LENGTH_SHORT).show();
                } else {
                    uploadFile();
                }
            }
        });
        chose_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });
    }

    private String getFileExtension(Uri uri) {
        ContentResolver cR = this.getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return mime.getExtensionFromMimeType(cR.getType(uri));
    }

    private void uploadFile() {
        StorageReference Ref = photoStorage.child(System.currentTimeMillis() + "." + getFileExtension(path));
        uploadTask = Ref.putFile(path)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(UploadActivity.this, "Image Uploaded", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        Toast.makeText(UploadActivity.this, "Upload failed", Toast.LENGTH_SHORT).show();
                    }
                });
    }

    private void openFileChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, 1);
    }

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

        if (requestCode == 1 && resultCode == RESULT_OK
                && data != null && data.getData() != null) {
            path = data.getData();
            passportsize_photo.setImageURI(path);
        }
    }
}

Dependencies:

dependencies {
    // ... (Other dependencies)
    
    implementation 'com.google.firebase:firebase-database:19.2.1'
    implementation 'com.google.firebase:firebase-auth:19.3.0'
    implementation 'com.google.firebase:firebase-storage:19.1.1'
    
    // ...
}

Manifest:

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

Please note that the provided code and dependencies are just a part of the original content you provided, and they are presented in a translated format. Let me know if you need any further assistance!

英文:

It has been days facing this problem. Able to the image by the way.Always shows "Upload failed".My app is connected to Firebase Database and Storage. All other values of app are successfully added to the database. But nothing goes in Firebase Storage. Please help.
My Upload activity:

public class UploadActivity extends AppCompatActivity {
    StorageTask uploadTask;
    Uri path;
    StorageReference photoStorage;
    DatabaseReference photoRef;
    ImageView passportsize_photo;
    Button upload_photo, chose_photo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload);

        chose_photo =findViewById(R.id.choose_photo);
        passportsize_photo =findViewById(R.id.passportsize_photo);
        upload_photo =findViewById(R.id.upload_photo);

        photoStorage = FirebaseStorage.getInstance().getReference(&quot;Photos&quot;);
        photoRef = FirebaseDatabase.getInstance().getReference(&quot;Photos&quot;);

        upload_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(uploadTask!=null&amp;&amp;uploadTask.isInProgress()){
                    Toast.makeText(UploadActivity.this, &quot;Upload in progress&quot;, Toast.LENGTH_SHORT).show();
                }else { uploadFile();}
            }
        });
        chose_photo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });

    }

    private String getFileExtension(Uri uri) {
        ContentResolver cR = this.getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return mime.getExtensionFromMimeType(cR.getType(uri));
    }
    private void uploadFile() {
        StorageReference Ref = photoStorage.child(System.currentTimeMillis() + &quot;.&quot; + getFileExtension(path));
        uploadTask = Ref.putFile(path)
                .addOnSuccessListener(new OnSuccessListener&lt;UploadTask.TaskSnapshot&gt;() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        // Get a URL to the uploaded content
                        //Uri downloadUrl = taskSnapshot.getDownloadUrl();
                        Toast.makeText(UploadActivity.this, &quot;Image Uploaded&quot;, Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        // Handle unsuccessful uploads
                        // ...
                        Toast.makeText(UploadActivity.this, &quot;Upload failed&quot;, Toast.LENGTH_SHORT).show();
                    }

                });
    }

    private void openFileChooser() {
        Intent intent = new Intent();
        intent.setType(&quot;image/*&quot;);
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, 1);
    }

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

        if (requestCode == 1 &amp;&amp; resultCode == RESULT_OK
                &amp;&amp; data != null &amp;&amp; data.getData() != null) {
            path = data.getData();
            passportsize_photo.setImageURI(path);
            //Picasso.get().load(path).into(passportsize_photo);
        }
    }


}

My dependencies:

dependencies {
    implementation fileTree(dir: &#39;libs&#39;, include: [&#39;*.jar&#39;])
    implementation &#39;androidx.appcompat:appcompat:1.1.0&#39;
    implementation &#39;androidx.constraintlayout:constraintlayout:1.1.3&#39;
    implementation &#39;com.android.support:support-annotations:28.0.0&#39;
    implementation &#39;com.google.android.material:material:1.1.0&#39;
    implementation &#39;androidx.navigation:navigation-fragment:2.2.1&#39;
    implementation &#39;androidx.navigation:navigation-ui:2.2.1&#39;
    implementation &#39;androidx.legacy:legacy-support-v4:1.0.0&#39;
    //noinspection GradleCompatible,GradleCompatible
    implementation &#39;com.android.support:recyclerview-v7:28.0.0&#39;
    implementation &quot;androidx.cardview:cardview:1.0.0&quot;

    testImplementation &#39;junit:junit:4.12&#39;
    androidTestImplementation &#39;androidx.test.ext:junit:1.1.1&#39;
    implementation &#39;com.google.android.material:material:1.1.0-alpha10&#39;
    androidTestImplementation &#39;androidx.test.espresso:espresso-core:3.2.0&#39;

    //firebase
    implementation &#39;com.firebase:firebase-client-android:2.5.2&#39;
    implementation &#39;com.google.firebase:firebase-database:19.2.1&#39;
    implementation &#39;com.google.firebase:firebase-auth:19.3.0&#39;
    implementation &#39;com.google.firebase:firebase-storage:19.1.1&#39;
    implementation &#39;com.google.firebase:firebase-analytics:17.3.0&#39;
    implementation &#39;com.google.firebase:firebase-inappmessaging-display:19.0.4&#39;
    implementation &#39;com.google.firebase:firebase-messaging:20.1.5&#39;
    implementation &#39;com.firebaseui:firebase-ui-database:4.3.2&#39;
    //

    //google sign in
    implementation &#39;com.google.android.gms:play-services-auth:17.0.0&#39;
    //glide
    implementation &#39;com.github.bumptech.glide:glide:4.8.0&#39;
    annotationProcessor &#39;com.github.bumptech.glide:compiler:4.8.0&#39;
    //circular image
    implementation &#39;de.hdodenhof:circleimageview:3.0.0&#39;
    //picasso
    implementation &#39;com.squareup.picasso:picasso:2.71828&#39;


}

Manifest:

 &lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&gt;
    &lt;uses-permission android:name=&quot;android.permission.READ_EXTERNAL_STORAGE&quot; /&gt;
    &lt;uses-permission android:name=&quot;android.permission.ACCESS_WIFI_STATE&quot; /&gt;

Read many forums and articles, did not find any solution.
Thanks in advance.

huangapple
  • 本文由 发表于 2020年4月9日 03:36:37
  • 转载请务必保留本文链接:https://java.coder-hub.com/61108683.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定