Flutter web:将 CSV 文件存储到 Firebase 存储,无需从计算机上传

Posted

技术标签:

【中文标题】Flutter web:将 CSV 文件存储到 Firebase 存储,无需从计算机上传【英文标题】:Flutter web: Store a CSV file to Firebase Storage without uploading it from the computer 【发布时间】:2021-08-05 13:51:44 【问题描述】:

我正在尝试将 Flutter 移动应用程序转换为 Flutter Web 应用程序。在 Flutter 应用程序中我生成了一个 csv 文件,将其存储在手机内存中,然后将其上传到 Firebase 存储,这里是相关代码的 sn-p:

//relevant imports:
import 'dart:io';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:path_provider/path_provider.dart' as path_provider;
import 'package:csv/csv.dart';

//relevant code
Future writeCSV(..) async
    final _storage = FirebaseStorage.instance;
    List<List> names = [];
    //...
    //Store data in the list 'names'
    //....
    final directory = await path_provider.getExternalStorageDirectory();
    File file = await File('$directory.path/data.csv').create();

    String csv = const ListToCsvConverter().convert(names);
    await file.writeAsString(csv);
    var snapshot = await _storage.ref().child('data2.csv').putFile(file).onComplete;

如何在 Flutter web 中实现这一点?当我试图搜索解决方案时,我只能找到您从计算机上传文件的示例,但我想直接生成文件然后将其上传到 Firebase 存储

【问题讨论】:

【参考方案1】:

我可以通过以下方式做到这一点:

import 'dart:html';
import 'package:firebase/firebase.dart' as fb;
//..
//..
String data = 'name,city,age\nSimon,London,30\nJohn,New York,40';
final path = 'data.csv';
var file_contents = <String>[data];
var blob = Blob(file_contents, 'text/csv', 'native');
fb.storage().refFromURL('gs://<name>.appspot.com/')
.child(path).put(blob);

【讨论】:

以上是关于Flutter web:将 CSV 文件存储到 Firebase 存储,无需从计算机上传的主要内容,如果未能解决你的问题,请参考以下文章

将用户上传到 Flutter Web 的图片存储为实际的 .jpg 文件

无法使用 Flutter Web 的 image_picker 将文件上传到 Firebase 存储

将 Json 数据存储到 JSON 文件并保存在 CSV 文件中

使用 Flutter web (chrome) 从系统目录获取文件路径以读取文件内容 例如:CSV 或文本文件

Flutter web - 无法将图像上传到 Firebase 存储

Flutter web:如何上传大文件?