Nativescript: Как создать объект JS File из пути к файлу? - PullRequest
0 голосов
/ 09 мая 2019

Я использую плагин nativescript-imagepicker для выбора изображений из телефонной галереи. Этот плагин позволяет мне получить путь к файлу.

Мне нужно иметь возможность загрузить этот выбранный файл на сервер, используя данные формы. Для этого мне нужно сначала создать объект файла.

Как я могу использовать путь к файлу, чтобы создать объект файла?

1 Ответ

2 голосов
/ 09 мая 2019

Для загрузки изображений из фотогалереи я настоятельно рекомендую использовать Nativescsript background http . Чтобы загрузить изображения на сервер, вам необходимо сохранить их в приложении, чтобы их можно было загрузить. Я последовал примеру, показанному здесь Загрузить пример .

Если вы сохранили изображения локально, если вам нужны дополнительные данные, вам нужно будет использовать multipartUpload и создать запрос, который будет выглядеть примерно так:

let BackgroundHTTP = require('nativescript-background-http')
let session = BackgroundHTTP.session('some unique session id')
let request: {
    url: 'your.url.to/upload/images',
    method: 'POST',
    headers: {
        'Content-Type': 'application/octet-stream'
    }
    description: 'Uploading local images to the server'
}

//photos should have at least the filename from when you saved it locally.
let params = []
photos.forEach(photo => {
    params.push({name: photo.name, filename: photo.filename, value: 'ANY STRING DATA YOU NEED'})
}

let task = session.multipartUpload(params, request)

task.on('progress', evt => {
    console.log('upload progress: ' + ((evt.currentBytes / evt.totalBytes) * 100).toFixed(1) + '%')
}

task.on('error', evt => {
    console.log('upload error')
    console.log(evt)
}

task.on('complete', evt => {
    //this does not mean the server had a positive response
    //but the images hit the server.
    // use evt.responseCode to determine the status of request
    console.log('upload complete, status: ' + evt.responseCode)
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...