# #firebase #flutter #firebase-storage
#огневая база #трепетать #база данных-хранилище
Вопрос:
У меня есть просмотр страниц в flutter, где есть 10 страниц. На каждой странице пользователь может выбрать и загрузить несколько изображений и несколько документов. Итак, страница 1 =gt; Несколько изображений и документов страница 2 =gt;gt; Несколько изображений и документов и так далее.. Таким образом, у меня есть код для циклической загрузки и загрузки данных в Firebase, но проблема в том, что я не могу понять, как назначить ключу более одного файла загрузки. Вот код для загрузки.
Future updateAdditionalProofOfDebt( String? iou, String? iouDoc, String? invoice, String? invoiceDoc, String? receipt, String? receiptDoc, String? contractAgreement, String? contractAgreementDoc, String? dopo, String? dopoDoc, String? emailCorrespondence, String? emailCorrespondenceDoc, String? smsWhatsApp, String? smsWhatsAppDoc, String? others, String? othersDoc, String? alloyWheels, String? alloyWheelsDoc, String? equipment, String? equipmentDoc, ) async { return await _firestore.collection('auctionPosts').doc(docid).update({ 'iou': iou, 'iouDoc': iouDoc, 'invoice': invoice, 'invoiceDoc': invoiceDoc, 'receipt': receipt, 'receiptDoc': receiptDoc, 'contractAgreement': contractAgreement, 'contractAgreementDoc': contractAgreementDoc, 'dopo': dopo, 'dopoDoc': dopoDoc, 'emailCorrespondence': emailCorrespondence, 'emailCorrespondenceDoc': emailCorrespondenceDoc, 'smsWhatsApp': smsWhatsApp, 'smsWhatsAppDoc': smsWhatsAppDoc, 'others': others, 'othersDoc': othersDoc, 'alloyWheels': alloyWheels, 'alloyWheelsDoc': alloyWheelsDoc, 'equipment': equipment, 'equipmentDoc': equipmentDoc, }); }
Вот код, в котором я загружаю данные в firebase.
ElevatedButton( onPressed: () async { firebase_storage.Reference ref1; firebase_storage.Reference ref2; firebase_storage.Reference ref3; firebase_storage.Reference ref4; firebase_storage.Reference ref5; firebase_storage.Reference ref6; firebase_storage.Reference ref7; firebase_storage.Reference ref8; firebase_storage.Reference ref9; firebase_storage.Reference ref10; firebase_storage.Reference ref11; firebase_storage.Reference ref12; firebase_storage.Reference ref13; firebase_storage.Reference ref14; firebase_storage.Reference ref15; firebase_storage.Reference ref16; firebase_storage.Reference ref17; firebase_storage.Reference ref18; firebase_storage.Reference ref19; firebase_storage.Reference ref20; for (var item in file1) { ref1 = firebase_storage.FirebaseStorage.instance .ref() .child('images/${Path.basename(item.path)}'); await ref1.putFile(item).whenComplete(() async { await ref1.getDownloadURL().then((value) { for (var item in file2) { ref2 = firebase_storage.FirebaseStorage.instance .ref() .child('docs/${Path.basename(item.path)}'); ref2.putFile(item).whenComplete(() async { await ref2.getDownloadURL().then((value2) { for (var item in file3) { ref3 = firebase_storage.FirebaseStorage.instance .ref() .child('images/${Path.basename(item.path)}'); ref3.putFile(item).whenComplete(() async { await ref3.getDownloadURL().then((value3) { for (var item in file4) { ref4 = firebase_storage .FirebaseStorage.instance .ref() .child( 'images/${Path.basename(item.path)}'); ref4.putFile(item).whenComplete(() async { await ref4 .getDownloadURL() .then((value4) { DatabaseService(docid: widget.auid) .updateAdditionalProofOfDebt( value, value2, value3, value4, 'value5', 'value6', 'value7', 'value8', 'value9', 'value10', 'value11', 'value12', 'value13', 'value14', 'value15', 'value16', 'value17', 'value18', 'value19', 'value20'); }); }); } }); }); } }); }); } }); }); } print('Files uploaded: ${widget.auid}'); Fluttertoast.showToast(msg: 'Files uploaded Successfully!'); }, child: Text('Upload'))
Для целей тестирования я игнорирую другие значения… Проблема в том, что даже когда я выбираю 2 или более файлов в firebase, сохраняется только 1 файл загрузки.
invoice: "https://firebasestorage.googleapis.com/v0/b/financial-recovery.appspot.com/o/images/Screenshot_20211204-144142.jpg?alt=mediaamp;token=6b5338fe-3458-4a12-8a6a-daf2343e5c6a" invoiceDoc: "value4" iou: "https://firebasestorage.googleapis.com/v0/b/financial-recovery.appspot.com/o/images/Screenshot_20211128-163348_Video Player.jpg?alt=mediaamp;token=6ef2cdb0-0e93-4ff3-afa6-569cccae444a" iouDoc: "https://firebasestorage.googleapis.com/v0/b/financial-recovery.appspot.com/o/images/saeedbacha.docx?alt=mediaamp;token=c00ee273-76b9-4356-94ce-224a64b4ab06"
Любая помощь будет признательна..
Комментарии:
1. Я предполагаю, что это может иметь какое-то отношение к этому асинхронному циклу, попробуйте использовать Future.forEach для асинхронных циклов
2. первый файл загрузки изображения загружен правильно, а затем, я думаю, он заменен вторым… Мне просто нужно найти способ хранить несколько ссылок для загрузки в одном ключе. Или, может быть, создать несколько ключей для нескольких загрузок ?