Ioni c Ошибка загрузки: параметр advanced-http: "params" должен быть объектом стиля словаря, - PullRequest
0 голосов
/ 27 мая 2020

Я хотел использовать только ioni c плагин https://github.com/silkimen/cordova-plugin-advanced-http#uploadFile при загрузке файла камеры / изображения с устройства в API следующими способами.

Хотя у него нет любая синтаксическая ошибка на основе документации, прокомментированной ниже.

Проблема была связана с параметрами, и я не мог понять, почему ...

Ошибка: advanced-http: " params "должен быть объектом стиля словаря,

enter image description here

Метод загрузки изображения в API.

async uploadToAPI(imgEntry) {

    var url = environment.api_host + "/activities/log/images"
    var filePath = imgEntry.localURL;
    var name = 'reports';

    var body = {
        user_hash: 'xxxxxxx',
        activities_id: 1,
        activities_log_id: 1
    }

    var headers = {
        'Authorization': 'Bearer ' + environment.api_security_bearer
    }

    // (method) HTTP.uploadFile(url: string, body: any, headers: any, filePath: string | string[], name: string | string[]): Promise<any>
    // @param url — The url to send the request to
    // @param body — The body of the request
    // @param headers — The headers to set for this request
    // @param filePath — The local path(s) of the file(s) to upload
    // @param name — The name(s) of the parameter to pass the file(s) along as
    // @returns — returns a FileEntry promise that will resolve on success, and reject on failure

    this.http.uploadFile(
        url,
        body,
        headers,
        filePath,
        name,
    ).then((data) => {
        console.log(data)
    })
        .catch(error => {
            console.log(error)
        })
}

Что я мог упустить из-за ошибки в приведенном выше коде?

PS: Только, хотел использовать ioni c -native / http / ngx и ничего больше.

import { HTTP } from '@ionic-native/http/ngx';

1 Ответ

0 голосов
/ 28 мая 2020

Я сообщил репозиторию github от исходного автора, но позже я нашел способ решить эту проблему и все еще использую ionic-native/http/ngx

Надеюсь, это поможет и другим.

this.http.setDataSerializer('multipart')

formData.set('user_hash', 'xxxxx')
formData.set('activities_id', this.activities_id)

var url = environment.api_host + "/activities/log/images"

this.http.sendRequest(url, {
    method: "post",
    data: formData,
    headers: this.headers,
    timeout: 60,
})
    .then(response => {
        console.log(response);
    })
    .catch(error => {
        console.log(error);
    });
}

Это работает

params:
{}
body:
[Object: null prototype] {
  user_hash:
   'xxxxxx',
  activities_id: '12' }
files:
[ { fieldname: 'reports',
    originalname: '1590642736754.jpg',
    encoding: '7bit',
    mimetype: 'image/jpeg',
    buffer:
     <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 48 00 48 00 00 ff e1 00 58 45 78 69 66 00 00 4d 4d 00 2a 00 00 00 08 00 02 01 12 00 03 00 00 00 01 00 01 ... >,
    size: 10857214 } ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...