我正在尝试上传我从相机拍摄的图像,但不适用于HTTP模块。后端开发人员说我需要:
要使用的POST方法是“ multipart / form”。图像文件将使用 “图片”的字段名称(此名称将传递给API PHP $ _FILES)。
要传递“功能”:“ mpostUserAvatar”和“用户ID”: 123456使用'application / x-www-form_urlencoded'。这将通过 放入API PHP的$ _POST中。
过去,我使用HTTP模块将其发布到其API,例如:
const requestBody = {
function: 'mpostUserAvatar',
userID: this.$store.state.user.id
}
this.$http.request({
url: this.$apiURL,
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded"},
content: this.$qs.stringify(requestBody)
}).then((response) => {
this.$loader.hide()
const agResponse = response.content.toJSON();
console.dir( agResponse)
}, (error) => {
console.log(error)
});
现在,如果我添加并尝试了图像:
const requestBody = {
function: 'mpostUserAvatar',
userID: this.$store.state.user.id,
image: avatar //this is an image asset instance
}
还尝试将内容类型更改为:"Content-Type": "multipart/form"
如何使用"Content-Type": "multipart/form"
上传文件并使用function
通过参数(userID
和"Content-Type": "application/x-www-form-urlencoded"
)发送
答案 0 :(得分:1)
Http模块不支持分段上传。您必须将图像转换为base64字符串并将其发送到服务器,或者使用支持分段上传的nativescript-background-http插件。
更新:
您将在自述文件中找到发送其他参数的示例。
var params = [
{ name: "function", value: "mpostUserAvatar" },
{ name: "userID", value: this.$store.state.user.id },
{ name: "image", filename: file, mimeType: "image/jpeg" }
];
var task = session.multipartUpload(params, request);
答案 1 :(得分:0)
我为您提供了解决方案。现在,使用后端服务器上的文件流方法可以很容易地使用本机脚本背景http上传图像。
点击上面的链接将帮助您了解nativescript核心。