2017-12-27 48 views
1

Firebase Storageに画像をアップロードすることを学んでいますが、私のアプリを起動して開くと、アップロードする画像を選択するとfirebaseにアップロードする画像はありません私が間違ってコードを書くのを助けてください。androidのFirebase Storageに画像をアップロードすることはできません

の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

を試してみてくださいあなたは** "画像アップロード" **トーストを持っています?そうでない場合は、OnFailureリスナーを追加し、エラーメッセージを共有します。 –

+0

あなたは何のエラーを得ていますか? –

+0

https://github.com/AtifAbbAsi19/Firebase-Helperこのリンクを試してください。 –

答えて

0

次の完全なコードを試してみてください。

1. progressbaseを使用してFirebaseに画像をアップロードします。

2.イメージのサイズを小さくし、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しかしそれは私のためにもう一度働いていません:(firebaseの記憶装置に画像を表示しません。 – LearnToProgram

+0

@LearnToProgram okいいえpbm bro .... 'addOnFailureListener(new OnFailureListener(){}'このメソッドをあなたのコードは、エラーメッセージを取得する..それをstackoverflowを投稿.... ....私に知らせる –

0

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) + "%..."); 
      } 
     }); 
関連する問題