Flutter应用向Firebase Storage上传大视频文件失败求助
大视频文件上传Firebase Storage失败问题
问题背景
我在Flutter应用中尝试向Firebase Storage上传700MB的大视频文件,项目从FlutterFlow迁移而来,仍保留部分FlutterFlow功能,正逐步移除这些功能。测试上传时出现长时间加载卡顿,随后任务终止,但可以重新选择视频上传,希望解决该问题。
当前上传逻辑代码
onPressed: () async { final selectedMedia = await selectMedia( isVideo: true, mediaSource: MediaSource.videoGallery, multiImage: false, ); if (selectedMedia != null && selectedMedia.every((m) => validateFileFormat( m.storagePath, context))) { setState(() => _model.isDataUploading1 = true); var selectedUploadedFiles = <FFUploadedFile>[]; var downloadUrls = <String>[]; try { showUploadMessage( context, 'Uploading file...', showLoading: true, ); selectedUploadedFiles = selectedMedia .map((m) => FFUploadedFile( name: m.storagePath .split('/') .last, bytes: m.bytes, height: m.dimensions?.height, width: m.dimensions?.width, blurHash: m.blurHash, )) .toList(); downloadUrls = (await Future.wait( selectedMedia.map( (m) async => await uploadData( m.storagePath, m.bytes), ), )) .where((u) => u != null) .map((u) => u!) .toList(); } finally { ScaffoldMessenger.of(context).hideCurrentSnackBar(); _model.isDataUploading1 = false; } if (selectedUploadedFiles.length == selectedMedia.length && downloadUrls.length == selectedMedia.length) { setState(() { _model.uploadedLocalFile1 = selectedUploadedFiles.first; _model.uploadedFileUrl1 = downloadUrls.first; }); showUploadMessage(context, 'Success!'); } else { setState(() {}); showUploadMessage(context, 'Failed to upload data'); return; } } },
Firebase Storage规则
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /{allPaths=**} { allow read, write: if false; } // Allow public read access to PDF files match /pdfs/{pdfFile} { allow read: if request.auth != null && pdfFile.matches('.*\\.pdf'); } // Maintain existing user-specific rules match /users/{userId}/{allPaths=**} { allow read: if request.auth.uid == userId; allow write: if request.auth.uid == userId; } } }
内容的提问来源于stack exchange,提问作者Salil
相关产品推荐
相关产品推荐

