我正确接收UploadTaskSnapshot
,字段downloadUrl包含Uri
的实例,用于解析上传文件的下载链接。
如何将存储和downloadUrl作为字符串?
答案 0 :(得分:5)
@DomingoMG他们想要的最新版本看起来像:
String location = await ref.getDownloadURL();
请参见https://pub.dartlang.org/packages/firebase_storage#-example-tab-
答案 1 :(得分:4)
<强>旧强>
<击> 撞击>
<击>final uploadTask = imageStore.putFile(imageFile);
final url = (await uploadTask.future).downloadUrl;
击> <击> 撞击>
<强>更新强>
这个答案https://stackoverflow.com/a/52690889/217408现在是准确的答案。
final ref = FirebaseStorage.instance
.ref()
.child('path')
.child('to')
.child('the')
.child('image_filejpg');
ref.putFile(imageFile);
// or ref.putData(Uint8List.fromList(imageData));
var url = await ref.getDownloadURL() as String;
或
var url = Uri.parse(await ref.getDownloadURL() as String);
答案 2 :(得分:4)
我通过以下代码从v1.0.3中获得了downloadUrl
。
StorageReference storageReference = _storage.ref().child(path);
StorageUploadTask uploadTask = storageReference.putFile(imageFile);
StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
String downloadUrl = await taskSnapshot.ref.getDownloadURL();
答案 3 :(得分:1)
从我的this answer
最新版本的插件不允许您再使用task.future()
,并且在文档中他们说使用lastSnapshot
对我不起作用。
因此,我使用了onComplete
。这是有效的解决方案:
StorageUploadTask uploadTask = storageRef.putFile(yourFile);
StorageTaskSnapshot storageTaskSnapshot = await uploadTask.onComplete;
String downloadUrl = await storageTaskSnapshot.ref.getDownloadURL();