将flutter web中生成的pdf上传到S3

Posted

技术标签:

【中文标题】将flutter web中生成的pdf上传到S3【英文标题】:Uploading pdf generated in flutter web to S3 【发布时间】:2021-11-11 19:18:22 【问题描述】:

我正在使用来自 pub.dev 的 pdf 3.6.0 库在 Flutter Web 中生成 pdf。当我使用doc.save() 保存文档时,我得到一个Future<Uint8List>。我想将此文件上传到 S3

对于 android/ios,我首先将Uint8List 保存为临时目录中的文件,使用path_provider,然后使用file.openRead() 获取数据以上传到 S3,它可以完美运行。

我无法在 Flutter Web 中复制相同的过程,因为 dart:io 不适用于 Flutter Web。即使universal_io 也无济于事。

我确实尝试使用以下代码将uint8list 直接推送到 s3

await dio.put(
      s3PresignedURLForPUT,
      data: uint8listData,
      options: Options(
        contentType: "application/pdf",
        headers: 
          "Content-Length": length,
        ,
      ),
      onSendProgress: (int sentBytes, int totalBytes) 
        double progressPercent = sentBytes / totalBytes * 100;
        print("$progressPercent %");
      ,
    );

但是当我在 S3 中再次打开此文件时,我收到一条错误消息:“无法加载 PDF 文档。”

flutter web生成的pdf如何达到同样的效果?

【问题讨论】:

请问有人解决了这个问题 长镜头:尝试转换为 string ,然后在后端对其进行解码。这是在颤振中编码的链接# 【参考方案1】:

(将其添加为评论,但没有足够的声誉)

您是否尝试过将 uint8listData 包装在 Stream.fromIterable() 中,即

data: Stream.fromIterable(uint8listData),

我碰巧注意到 dio 在其测试文件中使用 uint8List 执行此操作。

【讨论】:

以上是关于将flutter web中生成的pdf上传到S3的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何将pdf文件上传到firebase存储?

Flutter 上传带有进度条的大文件。 App 和 Web 都支持

将文件上传到 Flutter web 上的 Parse Server

如何在小部件的容器内显示 pdf [flutter-web]

Flutter web - 无法将图像上传到 Firebase 存储

将图像/文件上传到 Strapi (Flutter Web)