本机图像上传

时间:2019-01-07 15:52:34

标签: nativescript

我正在尝试上传我从相机拍摄的图像,但不适用于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")发送

2 个答案:

答案 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上传图像。

https://www.ekpotoliberty.com/read/NativeScript-Image-Uploading-to-NodeJs-Api-+-Cloudinary-using-NativeScript-Background-HTTP/5dad52c76dc813685f8da26f

点击上面的链接将帮助您了解nativescript核心。