gpt4 book ai didi

dart - 如何在 Dart 中发送大的 POST 数据

转载 作者:IT王子 更新时间:2023-10-29 06:55:17 26 4
gpt4 key购买 nike

我这样做:

 startUpload(File file) async {
var bytes = await file.readAsBytes();
var base64Img = base64.encode(bytes);
debugPrint(base64Img);

var apiUrl = "MY_URL";
var requestBody = new Map<String, String>();
requestBody["requestType"] = "upload";
requestBody["job_id"] = jobId.toString();
requestBody["picture"] = base64Img;
http.Response response = await http.post(apiUrl, body: requestBody);
}

而且我注意到后端收到的 base64Img 的长度不知何故小于应用程序中生成的长度。当我调用 base64Img.length 时,我得到 129648 但在服务器上,我得到 66401。请注意,该文件实际上是一个图像。因此,当我从服务器解码图像时,图像的下半部分不显示或以某种方式失真。

我也在 native Android 中发送相同的数据,没有任何问题。

所以我的问题是,dart 是否对请求正文数据的值有最大长度限制,我如何发送大数据?

最佳答案

要通过网络发送大文件,我必须使用 http 包中的 MultipartRequest,以及 MultipartFile 及其构造函数 - MultipartFile .fromBytes 在你的情况下。

var url = Uri.parse("YOUR_URL");
var request = new http.MultipartRequest("POST", url);
request.fields['some_additional_field'] = 'other_field';
request.files.add(new http.MultipartFile.fromBytes("file", bytes, filename:
file.name);
request.send().then((response) {
if (response.statusCode == 200) print("Uploaded!");
});

或者您可以使用 FormData 仅使用 FormData 发送文件 - 例如。使用来自 dart:html 的 HttpRequest

void sendRequest(File file) {
FormData data = new FormData();
data.append('field', 'some_string');
data.appendBlob('file', file);
HttpRequest.request('YOUR_URL', method: "POST", sendData: data).then((req)
{
print(req.responseText);
});
}

关于dart - 如何在 Dart 中发送大的 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50250874/

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