Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将图像上载到Firebase存储并在Firebase数据库中存储链接_Java_Android_Firebase_Firebase Realtime Database_Firebase Storage - Fatal编程技术网

Java 将图像上载到Firebase存储并在Firebase数据库中存储链接

Java 将图像上载到Firebase存储并在Firebase数据库中存储链接,java,android,firebase,firebase-realtime-database,firebase-storage,Java,Android,Firebase,Firebase Realtime Database,Firebase Storage,我正在将一个图像上载到firebase,我想将其url存储到数据库中 我的图像上载到Firebase存储中,名称存储在Firebase数据库中 但在ImageUrl“com.google.android.gms.tasks”中。zzu@5ef6ed8“存储这种url 我应该做哪些更改来存储正确的url 请提供完整的代码 这是我上传的照片 package com.namandevloper.satyampublic; import androidx.annotation.NonNull; imp

我正在将一个图像上载到firebase,我想将其url存储到数据库中

我的图像上载到Firebase存储中,名称存储在Firebase数据库中

但在ImageUrl“com.google.android.gms.tasks”中。zzu@5ef6ed8“存储这种url

我应该做哪些更改来存储正确的url

请提供完整的代码

这是我上传的照片

package com.namandevloper.satyampublic;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;

public class Upload_Photos extends AppCompatActivity {
    private static final int PICK_IMAGE_REQUEST = 1;
    private ImageView imageView;
    private EditText name;
    private Button uploadbutton;
    private Uri imageuri;
    private StorageReference mStorageref;
    private DatabaseReference mDatabaseref;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_upload__photos);
        imageView = findViewById(R.id.image);
        name = findViewById(R.id.name);
        uploadbutton = findViewById(R.id.btn_upload);
        mStorageref = FirebaseStorage.getInstance().getReference("Upload Photos");
        mDatabaseref = FirebaseDatabase.getInstance().getReference("Upload Photos");



        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openfilechooser();


            }
        });

        uploadbutton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                uploadfile();

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

    }

    private void uploadfile() {
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Uploading");
        progressDialog.show();


        if (imageuri !=null){
            StorageReference  filereference  = mStorageref.child(System.currentTimeMillis()+
                    "."+getFileExtension(imageuri));

            filereference.putFile(imageuri)
                    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {


                            Toast.makeText(Upload_Photos.this, "Upload Successfully", Toast.LENGTH_SHORT).show();
                            Upload upload = new Upload(name.getText().toString().trim(),taskSnapshot.getMetadata().getReference().getDownloadUrl()
                            .toString());
                            progressDialog.show();




                            String  uploadId = mDatabaseref.push().getKey();
                            mDatabaseref.child(uploadId).setValue(upload);
                            progressDialog.setCanceledOnTouchOutside(false);
                            progressDialog.dismiss();




                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {

                        }
                    })
                    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                        @Override
                        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                            double progress = (100.0*taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount();
                            progressDialog.setCanceledOnTouchOutside(false);
                            progressDialog.setMessage("Uploaded  " +(int)progress+"%");



                        }
                    });

        }else
            Toast.makeText(this, "Please Select a Image", Toast.LENGTH_SHORT).show();





    }

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

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data !=null &&
        data.getData()!=null){
            imageuri = data.getData();
           Picasso .get().load(imageuri).into(imageView);

        }
    }
}
这是我的活动上传照片

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:padding="16dp"
    android:layout_height="match_parent"
    tools:context=".Upload_Photos">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Image to Upload"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:textSize="22dp"
        android:textStyle="bold"
        />

    <ImageView
        android:id="@+id/image"
        android:layout_width="380dp"
        android:layout_height="249dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:src="@drawable/click" />


    <EditText
        android:id="@+id/name"
        android:layout_width="354dp"
        android:layout_height="66dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="400dp"

        android:hint="Image Name" />


    <Button
        android:id="@+id/btn_upload"
        android:layout_width="249dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="500dp"
        android:background="@android:color/holo_red_dark"
        android:text="Upload"
        android:textColor="@android:color/white"
        android:textStyle="bold" />
</RelativeLayout>

这就是我的数据库的外观


您必须调用侦听器才能从firebase存储获取下载uri。使用以下代码来完成此操作。阅读

filereference.putFile(imageuri)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Toast.makeText(上传照片,这是“上传成功”,Toast.LENGTH\u SHORT.show();
filepath.getDownloadUrl().addOnSuccessListener(新OnSuccessListener()){
@凌驾
成功时的公共无效(Uri){
Uri downloadUrl=Uri;
Upload Upload=新上载(name.getText().toString().trim(),downloadUrl.toString());
progressDialog.show();
字符串uploadId=mDatabaseref.push().getKey();
mDatabaseref.child(uploadId).setValue(upload);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.disclose();
}
});
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
}
})
.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
双进度=(100.0*taskSnapshot.GetByTestTransferred())/taskSnapshot.getTotalByteCount();
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setMessage(“上传”+(int)进度+“%”;
}
});

当我使用filepath时,它显示无法解析符号;当我使用filereference时,它在底部显示2-3个错误。我该怎么办?请在更正后将整个代码发送给我,或者我可以亲自与您交谈吗?@user9157668请使用更新的代码是的,我使用了它,但它下面的所有内容都给了我错误。请输入完整的代码。请解释您得到的错误。addOnProgressListener(new OnProgressListener(){给出错误无法解决的方法。请您在其他平台上与我交谈好吗?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:padding="16dp"
    android:layout_height="match_parent"
    tools:context=".Upload_Photos">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click Image to Upload"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:textSize="22dp"
        android:textStyle="bold"
        />

    <ImageView
        android:id="@+id/image"
        android:layout_width="380dp"
        android:layout_height="249dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:src="@drawable/click" />


    <EditText
        android:id="@+id/name"
        android:layout_width="354dp"
        android:layout_height="66dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="400dp"

        android:hint="Image Name" />


    <Button
        android:id="@+id/btn_upload"
        android:layout_width="249dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="500dp"
        android:background="@android:color/holo_red_dark"
        android:text="Upload"
        android:textColor="@android:color/white"
        android:textStyle="bold" />
</RelativeLayout>
filereference.putFile(imageuri)
    .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
            Toast.makeText(Upload_Photos.this, "Upload Successfully", Toast.LENGTH_SHORT).show();
            filepath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                    @Override
                    public void onSuccess(Uri uri) {
                        Uri downloadUrl = uri;
                        Upload upload = new Upload(name.getText().toString().trim(),downloadUrl.toString());
                        progressDialog.show();
                        String  uploadId = mDatabaseref.push().getKey();
                        mDatabaseref.child(uploadId).setValue(upload);
                        progressDialog.setCanceledOnTouchOutside(false);
                        progressDialog.dismiss();
                    }
            });
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {

        }
    })
    .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
        @Override
        public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
            double progress = (100.0*taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount();
            progressDialog.setCanceledOnTouchOutside(false);
            progressDialog.setMessage("Uploaded  " +(int)progress+"%");



        }
    });