gpt4 book ai didi

http - 如何在 flutter 中使用带有 url 编码正文的 http.post 下载文件?

转载 作者:行者123 更新时间:2023-12-05 06:15:06 41 4
gpt4 key购买 nike

我想构建一个网络应用程序,使用 http.post 方法在 flutter 中下载 pdf 文件,我已经在互联网上搜索过它,但我仍然无法下载该文件。我已经在 postman 中尝试过使用原始 json(然后发送和下载)它可以工作但不能在 flutter 中完成。

Future<File> postRequest() async {
var url = 'xxxxxxx'; <- example url

Map dat = {
"FileName" : "itsPdf.pdf"
};

File file;
var body = json.encode(dat);

var response = await http.post(Uri.parse(url),
headers: {"Accept": "application/json",
"content-type": "application/json"},
body: body
);

print(response.statusCode);
if(response.statusCode == 200) {
file = json.decode(response.body) as File;
return file;
} else {
print("ERROR");
}
}

状态码 = 200

错误:FormatException:SyntaxError:位置 0 的 JSON 中的意外标记 %

最佳答案

我知道这可能为时已晚,但对于 future 的用户而言。

要首先从您的服务器获取 pdf 文件,pdf 文件必须以 base64 编码。之后,您可以在 flutter 端使用 jsonDecode 从响应主体中解码 base64 数据。

http.post("https://yoururl/api",body: json.encode({"pdf":"pdf1"}))
.then((response) {
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
// The response.body will be in json. After decoding response.body it will be in base64.

var data = json.decode(response.body);
var pdfData = base64.decode(data["base64"]);

});
createPdf() async {
var bytes = base64Decode(pdfData.replaceAll('\n', ''));
final output = await getTemporaryDirectory();
final file = File("${output.path}/example.pdf");
await file.writeAsBytes(bytes.buffer.asUint8List());

print("${output.path}/example.pdf");
setState(() {});
}

这会将文件保存到您的应用程序临时目录中。但是您还需要将 path_provider 添加到 pubspec.yaml 以将数据保存到应用程序目录,在 pubspec.yaml 中添加 pdf 以将 base64 字节转换为 pdf 文件,以及 dart:convert 以解码和编码 json 和 base64 数据。

关于http - 如何在 flutter 中使用带有 url 编码正文的 http.post 下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62571306/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com