如何从 URL 下载 .pdf 文件 POST 请求在 Flutter 中有 body 和 headers?
How to download a .pdf file from an URL with POST Request having a body and headers in Flutter?
我正在尝试从 URL 下载一个 .pdf 文件,在 Flutter 中有 POST 请求 body。
我正在使用 Dio 插件进行网络调用。
这是我到目前为止尝试做的事情:
Dio dio = Dio();
late Response response;
Future<APIResponse> downloadFile({token}) async {
await dio
.post('https://www.example.com/sample/download',
data: {
{"month": "January", "year": "2022"}
},
options: Options(
headers: {
'Authorization': 'Bearer $token',
},
))
.then((value) {
if (value.statusCode == 200) {
response = value;
// here I need the file to be downloaded
// specific folder would be /downloads folder in Internal Storage
}
});
return APIResponse.fromJson(response.data);
}
但据我检查,Dio 没有 POST 带有下载选项的方法。
这是 Dio 文档中给出的内容:
下载文件:
response = await dio.download('https://www.google.com/', './xx.html');
但是这里不能添加请求body或者headers.
我还需要将文件下载到设备中的特定文件夹,例如内部存储中的 /downloads 文件夹。
下载成功后,我们可以直接从该屏幕打开文件。
如何进行?我是 Flutter 的新手。
您可以使用 options
参数。您还可以添加 cookie 或其他参数。
response = await dio.download(
'https://www.google.com/', './xx.html',
options: Options(
headers: {'cookie': 'any_cookie'},
method: 'POST',
),
);
我正在尝试从 URL 下载一个 .pdf 文件,在 Flutter 中有 POST 请求 body。 我正在使用 Dio 插件进行网络调用。
这是我到目前为止尝试做的事情:
Dio dio = Dio();
late Response response;
Future<APIResponse> downloadFile({token}) async {
await dio
.post('https://www.example.com/sample/download',
data: {
{"month": "January", "year": "2022"}
},
options: Options(
headers: {
'Authorization': 'Bearer $token',
},
))
.then((value) {
if (value.statusCode == 200) {
response = value;
// here I need the file to be downloaded
// specific folder would be /downloads folder in Internal Storage
}
});
return APIResponse.fromJson(response.data);
}
但据我检查,Dio 没有 POST 带有下载选项的方法。
这是 Dio 文档中给出的内容:
下载文件:
response = await dio.download('https://www.google.com/', './xx.html');
但是这里不能添加请求body或者headers.
我还需要将文件下载到设备中的特定文件夹,例如内部存储中的 /downloads 文件夹。 下载成功后,我们可以直接从该屏幕打开文件。
如何进行?我是 Flutter 的新手。
您可以使用 options
参数。您还可以添加 cookie 或其他参数。
response = await dio.download(
'https://www.google.com/', './xx.html',
options: Options(
headers: {'cookie': 'any_cookie'},
method: 'POST',
),
);