Среда
Cordova 8.1.1 (cordova-lib@8.1.0)
Android 7.1.1
Проблема
Когда мы пытаемся извлечь изображение из локальной файловой системы устройства и отправить созданный объект Файл через xhr, двоичные данные отсутствуют в теле POST.Полезная нагрузка из файлового объекта Cordova приводит к [object Object]
коду
проблема воспроизведения проекта: https://github.com/lightbeard/cvfileIssue
fetch("https://cdn.pixabay.com/photo/2017/07/10/23/43/question-mark-2492009_1280.jpg")
.then(response => response.blob())
.then(blob => {
// test 1
xhr(blob, 'http://example.com/process-jsfile');
// test 2
writeFile('test2.jpg', blob)
.then(_ => {
getFile('test2.jpg')
.then(file2 => {
xhr(file2, 'http://example.com/process-cvfile');
});
});
});
});
function xhr(data, url) {
const http = new XMLHttpRequest();
http.open('POST', url, false);
http.setRequestHeader('Content-type', 'img/jpeg');
http.send(data);
}
function writeFile(filename, blob) {
return new Promise(resolve => {
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, dataDir => {
dataDir.getFile(filename, {create:true, exclusive: false}, file => {
file.createWriter(fileWriter => {
fileWriter.onwriteend = resolve;
fileWriter.write(blob);
});
});
});
});
}
function getFile(filename) {
return new Promise(resolve => {
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, dataDir => {
dataDir.getFile(filename, {create: false}, fileEntry => {
fileEntry.file(resolve);
});
});
});
}
Результат теста 1 (все в порядке)
Результат теста 2 (неправильный)