Как загрузить изображение в папку в хранилище 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();
}
})