В моем приложении Cordova пользователь может записать аудиофайл (через медиа-плагин), который затем сохраняется в локальном файле (cordova.file.dataDirectory) - это работает как чудо.
Я сейчас Вы хотите выбрать этот файл и загрузить его через xhr, но на стороне сервера элемент файла пуст. Вот как выглядит мой код:
window.resolveLocalFileSystemURL(
cordova.file.dataDirectory + "" + voiceMediaFilename,
function(fileEntry) {
console.log("resolveLocalFileSystemURL done for " + voiceMediaFilename);
fileEntry.file(
function(file){
console.log("getFile done for " + voiceMediaFilename);
console.log("file done, starting fd ...");
var fd = new FormData();
fd.append("sender", uuid);
fd.append("receiver", receiver);
fd.append("timestamp", timestamp);
fd.append("random", random);
fd.append("media", file);
console.log(file);
console.log("Filesize of audio: " + file.size);
uploadMedia(fd, user, timestamp, messageTypeOwn, uuid, receiver, msgId);
voiceMediaFilename = "";
},
function(err){
alert("Error getting file");
}
);
},
function(err){
alert("Error in resolveLocalFileSystemURL " + JSON.stringify(err));
}
);
Функция uploadMedia () сама выполняет запрос xhr - функция работает, потому что я использую его и в других случаях (например, пользователь выбирает файл через файл типа ввода ). Я предполагаю, что мне чего-то не хватает, чтобы действительно выбрать объект файла, но я не знаю, что именно.
Спасибо