如何解决NativeScript Vue 发送带有表单数据的请求multipart/form-data
我的应用程序中有一个案例,我需要将数据作为表单数据发送到服务器。该数据包括一条消息和一个可选的文件列表。我面临的问题是,在发送请求时,它的格式不正确。
请求有效载荷
预期(浏览器中具有相同请求的示例)
实际结果是负载以某种方式进行了 URL 编码。
代码示例
sendData({ id,message,files }) {
const config = {
headers: {
'Content-Type': 'multipart/form-data'
}
};
const payload = new FormData();
payload.append('message',message);
if (files && files.length > 0) {
files.forEach((file) => {
payload.append(`files`,file,file.name);
});
}
return AXIOS_INSTANCE.post(
`/api/save/${id}`,payload,config
);
}
从上面可以看出,我正在使用 axios
并且我正在尝试使用 FormData
来格式化数据。从我的研究来看,NativeScript 过去似乎不支持通过 XHR 的二进制数据 - 但是从 this merge request on GitHub 看来,它似乎已经在大约一年前得到修复。
所以我怀疑我做错了什么,也许有替代使用 FormData
的方法,否则我不应该将 axios
用于这个特定请求?
版本号
-
nativescript
6.8.0 -
tns-android
6.5.3 -
tns-ios
6.5.3
解决方法
Nativescript 的 background-http 支持多部分表单数据。
请参阅下文了解其如何配置为进行分段上传
var bghttp = require("nativescript-background-http");
var session = bghttp.session("image-upload");
var request = {
url: url,method: "POST",headers: {
"Content-Type": "application/octet-stream"
},description: "Uploading "
};
var params = [
{ name: "test",value: "value" },{ name: "fileToUpload",filename: file,mimeType: "image/jpeg" }
];
var task = session.multipartUpload(params,request);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。