Как загрузить изображение в папку в хранилище Firebase

Я пишу приложение, которое выбирает изображение из галереи и загружает в папку в FireStore.

await Future.forEach(_paths.entries, (v) async {
                        String uid = Uuid().v1();
                        StorageReference imgReference = 
_storageReference.child("Form2").child(uid);
                        StorageUploadTask task = imgReference.putFile(
                            File(v.value)
                        );
                        StorageTaskSnapshot downloadURL = await 
task.onComplete;
                        String value = await downloadURL.ref.getDownloadURL();
                    paths[uid] = value;
                  }

Изображение не загружается в папку. Но это загрузка прямо в пожарный магазин

3 ответа

В соответствии с документами firebase проще всего добавить дочернюю ссылку на хранилище:

      uploadImageToFireStore(String foldername, String fileName) async {
  // Upload image to firebase storage
  final storageRef = FirebaseStorage.instance.ref().child("$foldername/$fileName");
  await storageRef.putFile(imgPath!);
}

Эта функция получает имя папки и имя файла для загрузки файла. Надеюсь это поможет Удачи

Вам нужно будет указать имя папки в.child(). Подобно: .child("/$folder").child("$fileName"),

Пример:

    StorageReference ref = FirebaseStorage.instance.ref().child('/$folder').child(fileName);
    StorageUploadTask uploadTask = ref.putData(imageData);
    print('Upload triggered in the background.');
    ...

    return await (await uploadTask.onComplete).ref.getDownloadURL();

}

Это код, который загружает изображение с его именем в firebase. Sliderutils - это класс, в котором есть функции getName() и getImageUrl() (методы получения и установки).

StorageReference Ref= 
mStorageRef.child(System.currentTimeMillis()+"."+getPath(filePath));

        mStorageTask = Ref.putFile(filePath)
            .addOnSuccessListener(new 
OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        Toast.makeText(MainActivity.this, "Image uploaded successfully.", Toast.LENGTH_LONG).show();

                        SliderUtils sliderUtils = new SliderUtils(EditTextName.getText().toString().trim(),
                                taskSnapshot.getDownloadUrl().toString());
                        String uploadId = mDatabaseRef.push().getKey();
                        mDatabaseRef.child(uploadId).setValue(sliderUtils);
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        Toast.makeText(MainActivity.this,"Image upload failed.",Toast.LENGTH_SHORT).show();
                }
            })
Другие вопросы по тегам