【发布时间】:2022-02-20 02:58:29
【问题描述】:
我想使用颤振从链接将图像上传到 Firebase 存储,所以如果有人能告诉我我该怎么做。 现在我正在使用 imagePicker 从手机中挑选图像,但现在我想从我搜索过的 URL 上传图片,there 是 javascript 或其他但不是颤振的答案,我希望它颤抖 谢谢
【问题讨论】:
标签: firebase flutter firebase-storage
我想使用颤振从链接将图像上传到 Firebase 存储,所以如果有人能告诉我我该怎么做。 现在我正在使用 imagePicker 从手机中挑选图像,但现在我想从我搜索过的 URL 上传图片,there 是 javascript 或其他但不是颤振的答案,我希望它颤抖 谢谢
【问题讨论】:
标签: firebase flutter firebase-storage
您必须先从链接下载图片并将其保存在临时目录中,然后上传到 firebase,因为您已经从图片选择器上传了它 这是示例代码,可以帮助您更好地理解
download(String url, String fileName) async {
try {
var per = await askPermission();
if (per!.isGranted) {
const path =
'/storage/emulated/0/Download/'; //you can use temporary
directory
final file = File('$path/$fileName');
await dio!.download(siteUrl + url, file.path,
onReceiveProgress: (rec, total) {
isLoading = true;
print(rec);
});
Get.snackbar('Success', 'File downloaded successfully',
backgroundColor: Colors.green.withOpacity(0.4));
} else {
Get.snackbar('Error', 'please grant storage permission',
backgroundColor: Colors.red.withOpacity(0.4));
}
} catch (e) {
pr.close();
Get.snackbar('Error', '${e.toString}',
backgroundColor: Colors.red.withOpacity(0.4));
print(e);
}
}
我使用dio 和Permission handler 包
【讨论】:
从您链接的问题中,您可以将网址存储在您的数据库中,如果您真的想将它们存储在您的 Firebase 存储中,您必须下载它们并保存到 Firebase。你可以使用像flutter_downloader这样的插件, 或使用 dio /http 下载然后上传到 firebase
【讨论】:
这对我有用 `
class ImageUrlToStorage extends StatefulWidget {
const ImageUrlToStorage({Key key}) : super(key: key);
@override
State<ImageUrlToStorage> createState() => _ImageUrlToStorageState();
}
class _ImageUrlToStorageState extends State<ImageUrlToStorage> {
Dio dio;
bool isLoading = false;
final url =
'https://images.pexels.com/photos/733853/pexels-photo-733853.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500';
_save() async {
var status = await Permission.storage.request();
if (status.isGranted) {
var response = await Dio()
.get(url, options: Options(responseType: ResponseType.bytes));
final result = await ImageGallerySaver.saveImage(
Uint8List.fromList(response.data),
quality: 60,
name: "hello");
print(result);
}
}
@override
Widget build(BuildContext context) {
return ButtonWidget(
onClicked: () {
_save();
},
text: 'Upload Image to Storage',
);
}
}
` 我用过 dio、image_gallery_saver 和 Permission_handler
【讨论】: