Flutter:将图像文件从url复制到firebase

时间:2017-09-12 06:40:36

标签: image firebase dart firebase-storage flutter

我尝试将用户个人资料图片从外部服务复制到我的firebase服务器上。到目前为止,我有:

final File file = await new File.fromUri(Uri.parse(auth.currentUser.photoUrl)).create();
final StorageReference ref = FirebaseStorage.instance.ref().child("profile_image_${auth.currentUser.uid}.jpg");
final StorageUploadTask uploadTask = ref.put(file);
final Uri downloadUrl = (await uploadTask.future).downloadUrl;

// add user profile picture url to user object
final userReference = FirebaseDatabase.instance
    .reference()
    .child('users/' + auth.currentUser.uid);
userReference.set({'photoUrl': downloadUrl});

最上面一行给出了错误:Unsupported operation: Cannot extract a file path from a https URI

这样做的正确方法是什么?这甚至应该在客户端完成吗? (我应该将这个url传递给firebase并使用函数来下载服务器端吗?)

1 个答案:

答案 0 :(得分:1)

File仅支持文件系统上的文件。 要使用HTTP加载内容,请使用http包。 另请参阅https://flutter.io/networking/

var httpClient = createHttpClient();
var response = await httpClient.get(url); 

然后从response.body获取数据, 或

var response = await httpClient.readBytes(url);

将其作为二进制文件(Uint8List

另见https://www.dartdocs.org/documentation/http/0.11.3+14/http/Client-class.html