2017-12-27 11 views
1

Ich lerne gerade ein Bild in Firebase Storage hochladen, aber wenn ich meine App laufen/öffnen und ein Bild zum Hochladen auswählen, gibt es kein Bild in Firebase hochladen Speicher bitte helfen Sie mir, wo ich falsch Code zu schreiben.Ich kann nicht ein Bild in Firebase Storage in Android hochladen

AndroidManifest.xml:

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

MainActivity.java:

package com.fireapp.newfireapplication; 

import android.content.Intent; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Toast; 

import com.google.android.gms.tasks.OnSuccessListener; 
import com.google.firebase.storage.FirebaseStorage; 
import com.google.firebase.storage.StorageReference; 
import com.google.firebase.storage.UploadTask; 

public class MainActivity extends AppCompatActivity { 

    private StorageReference storageReference; 
    private static final int GALLERY_INTENT=1; 


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

     storageReference = FirebaseStorage.getInstance().getReference(); 
    } 

    public void buttonClicked(View view) { 
     Intent intent = new Intent(Intent.ACTION_PICK); 
     intent.setType("image/*"); 
     startActivityForResult(intent,GALLERY_INTENT); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(requestCode == GALLERY_INTENT && requestCode == RESULT_OK){ 
      Uri uri = data.getData(); 
      StorageReference filepath = storageReference.child("Photos").child(uri.getLastPathSegment()); 
      filepath.putFile(uri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
       @Override 
       public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
        Toast.makeText(MainActivity.this,"Image Uploaded",Toast.LENGTH_SHORT).show(); 
       } 
      }); 
     } 
    } 
} 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:layout_height="match_parent" 
    android:orientation="vertical" 
    android:padding="16dp" 
    tools:context="com.fireapp.newfireapplication.MainActivity"> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Upload Image" 
     android:onClick="buttonClicked"/> 

</LinearLayout> 
+0

Haben Sie ** "Bild hochgeladen" ** Toast bekam ?? Wenn nicht, fügen Sie OnFailure Listener hinzu und teilen Sie Ihre Fehlermeldung. –

+0

Welchen Fehler bekommst du ?? –

+0

https://github.com/AtifAbbAsi19/Firebase-Helper versuchen Sie diesen Link.! –

Antwort

0

den folgenden vollständigen Code Versuchen.

1. Laden Sie das Image mit progressDialog in Firebase hoch.

2. Reduzieren Sie die Bildgrößen und senden Sie sie an Firebase.

uploadimage_firebase.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if(filePath != null) { 

        progressDialog.setCancelable(false); 
        progressDialog.show(); 

        Log.d("file.getName()","*** "+filePath); 
        File file= new File(filePath.getPath()); 
        file.getName(); 


        /* Compress Image file size below code  */ 


        Bitmap bmp = null; 
        try { 

         bmp = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 

        } catch (IOException e) { 

         Log.d("PrintIOExeception","*****  "+e.toString()); 
         e.printStackTrace(); 
         } 

        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        bmp.compress(Bitmap.CompressFormat.JPEG, 25, baos); 
        byte[] data = baos.toByteArray(); 



        //uploading the image // 
        UploadTask uploadTask = storageRef.child(file.getName()).putBytes(data); 


        uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { 
         @Override 
         public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { 
          progressDialog.dismiss(); 

         Uri urlvalues = taskSnapshot.getDownloadUrl(); 

         Log.d("displayimageurls","**** "+urlvalues); 


          Toast.makeText(Firebase_Imageuploading.this, "Upload successful", Toast.LENGTH_SHORT).show(); 
         } 
        }).addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception e) { 
          progressDialog.dismiss(); 

          Log.d("printimaguploadfaild","***** "+e.toString()); 

          Toast.makeText(Firebase_Imageuploading.this, "Upload Failed -> " + e, Toast.LENGTH_SHORT).show(); 
         } 
        }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { 
         @Override 
         public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { 
          //calculating progress percentage 
          double progress = (100.0 * taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount(); 

          //displaying percentage in progress dialog 
          progressDialog.setMessage("Uploaded " + ((int) progress) + "%..."); 
         } 
        }); 
       } 
       else { 
        Toast.makeText(Firebase_Imageuploading.this, "Select an image", Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
+0

thx für Kommentar, aber es funktioniert nicht für mich wieder :(zeigt kein Bild in Firebase Speicher – LearnToProgram

+0

@LearnToProgram ok Nein PBM bro .... 'addOnFailureListener (neue OnFailureListener() {}' fügen Sie diese Methode in Dein Code bekommt eine Fehlermeldung ... dann poste stackoverflow .... lass es mich wissen –

0

versuchen Firebase Helper Class

progressDialog.setMessage(context.getString(R.string.loading)); 
      progressDialog.show(); 


     filePath = mFStorage.child("image").child(getRandomId() + ".png"); 

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

       progressDialog.dismiss(); 

       imageUrl = taskSnapshot.getDownloadUrl().toString(); 


      } 
     }).addOnFailureListener(new OnFailureListener() { 
      @Override 
      public void onFailure(@NonNull Exception exception) { 
       progressDialog.dismiss(); 
       //Toast.makeText(getApplicationContext(), exception.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     }).addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() { 
      @Override 
      public void onProgress(UploadTask.TaskSnapshot taskSnapshot) { 
       //displaying the upload progress 
       double progress = (100.0 * taskSnapshot.getBytesTransferred())/taskSnapshot.getTotalByteCount(); 
       progressDialog.setMessage("Uploaded " + ((int) progress) + "%..."); 
      } 
     }); 
Verwandte Themen