Загрузка изображения Nativescript - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь загрузить изображение, полученное с камеры, но оно не работает с модулем HTTP. Бэкэнд-разработчик сказал, что мне нужно:

Используемый метод POST - «multipart / form». Файл изображения будет использовать имя поля «изображение» (оно будет передано в API PHP в $ _FILES).

Для передачи в «function»: «mpostUserAvatar» и «userID»: 123456 использовать 'application / x-www-form_urlencoded'. Это пройдет в $ _POST для API PHP.

В прошлом я использовал 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"

1 Ответ

0 голосов
/ 07 января 2019

Многокомпонентная загрузка не поддерживается модулем Http. Вы должны либо преобразовать изображение в строку base64 и отправить его на сервер, либо использовать плагин nativescript-background-http , который поддерживает загрузку из нескольких частей.

Обновление:

Пример для отправки дополнительных параметров вы найдете в файле ReadMe.

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...