【问题标题】:Upload image from URL to Firebase Storage using flutter使用颤振将图像从 URL 上传到 Firebase 存储
【发布时间】:2022-02-20 02:58:29
【问题描述】:

我想使用颤振从链接将图像上传到 Firebase 存储,所以如果有人能告诉我我该怎么做。 现在我正在使用 imagePicker 从手机中挑选图像,但现在我想从我搜索过的 URL 上传图片,there 是 javascript 或其他但不是颤振的答案,我希望它颤抖 谢谢

【问题讨论】:

    标签: firebase flutter firebase-storage


    【解决方案1】:

    您必须先从链接下载图片并将其保存在临时目录中,然后上传到 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);
     }
    }
    

    我使用dioPermission handler

    【讨论】:

      【解决方案2】:

      从您链接的问题中,您可以将网址存储在您的数据库中,如果您真的想将它们存储在您的 Firebase 存储中,您必须下载它们并保存到 Firebase。你可以使用像flutter_downloader这样的插件, 或使用 dio /http 下载然后上传到 firebase

      【讨论】:

        【解决方案3】:

        这对我有用 `

        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

        【讨论】:

          猜你喜欢
          • 2021-04-07
          • 2022-01-17
          • 2021-03-07
          • 1970-01-01
          • 1970-01-01
          • 2021-04-03
          • 2021-02-26
          • 2020-04-01
          相关资源
          最近更新 更多