我尝试将用户个人资料图片从外部服务复制到我的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并使用函数来下载服务器端吗?)
答案 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