从云端获取pdf数据并保存在flutter中。

问题描述 投票:0回答:1

我一直在使用cloudinary来存储我的pdf文件,使用firebase作为我的后台。然而,我有这个问题。当我使用http.get在cloudinary提供的链接上的时候 https://res.cloudinary.com/cloudname/raw/upload/vxxxxxxxxxxx/xxxxxxxxxxxxxxxxxxxx 我得到的是ascii数据而不是pdf文件。我试着把数据以字符串的形式写到一个以.pdf为扩展名的文件中,但没有成功。我已经尝试将其转换为字节,然后写入文件为字节,这也没有工作。任何帮助,我可以如何保存这个文件在Android上使用flutter它将是一个很大的帮助。

    await http.post('https://api.cloudinary.com/v1_1/${DotEnv().env['cloud_name']}/raw/upload',body: { "file": "data:raw/pdf;base64,$pdf", "upload_preset": DotEnv().env['upload_preset']} );
    var response = await http.get('https://res.cloudinary.com/<cloudname>/raw/upload/v1590958359/gsvxe4zp7bb6yyldrccu');
    final directory = await getApplicationDocumentsDirectory();
    final path2 = directory.path;

    File x = File('$path2/trial.pdf');
    x.writeAsString(response.body);

这里是代码,因为我目前有它。pdf在这种情况下是base64编码的pdf。我这里的链接是 http.get 是来自我已经上传的文件。

flutter cloudinary
1个回答
0
投票

谢谢你补充的细节。

首先,我建议你把 resource_typerawimage. 此外,请将Base64数据URI中的MIME类型更新为 application/pdf.

上传成功后,您从Cloudinary得到的URL将是一个PDF资源,这意味着您可以通过一个简单的cURL请求或通过任何HTTP库下载它。

例如,使用 secure_url 到上传API响应中返回的资产,以下载文件到 my_test_file.pdf -

curl -s https://res.cloudinary.com/demo/image/upload/multi_page_pdf.pdf --output my_test_file.pdf
© www.soinside.com 2019 - 2024. All rights reserved.