Я создаю небольшое приложение с использованием инструментов Visual Studio и кордоны. Приложение отображает ряд вопросов, и на каждом из них пользователь может делать несколько фотографий и рисовать их.img из ms-appdata: /// local, не показывающий использование Winjs/cordova
Приложение, нацеленное на Windows 8.1, но в будущем будет нацелено на андроид, поэтому я попытался не использовать собственные функции Windows.
В приложении есть оверлей, где пользователь может сделать снимок с помощью камеры cordova-pluggin. Затем сделанное снимок отображается в элементе img, затем оно копируется в элемент холста, который нужно нарисовать, и когда пользователь сохраняет фотографию (с помощью пользовательского чертежа) в ms-appdata: //local/XXX.png. Изображение правильно сохранено, и я проверил его на файловой системе, и он есть и является допустимым файлом png.
Это код, я использую, чтобы написать, используя Cordova-плагин-файл (v 4.1.1-Dev) изображение в файл:
window.resolveLocalFileSystemURL(store, function (dir) {
console.log("got main dir", dir);
//gravar imagem para ficheiro
dir.getFile(fileAnotacao, { create: true }, function (file) {
console.log("got the file", file);
setTimeout(function() {
if (apagou) { //apagou a referencia, criar nova e criar ficheiro
dir.getFile(fileAnotacao, { create: true }, function (file) {
writeLog(decodedData, file);
});
} else
//grava ficheiro
writeLog(decodedData, file);
}, 1500);
//1º apaga ficheiro se existir
file.remove(function() {
console.log('File removed.');
apagou = true;
}, fail);
});
});
Функция WriteLog заключается в следующем:
function writeLog(str, lob) {
if (!lob) return;
lob.createWriter(function (fileWriter) {
fileWriter.seek(fileWriter.length);
fileWriter.write(str);
console.log("ok, in theory i worked");
}, fail);
}
После сохранения файла на диск я обновляю пространство имен с помощью Пути двух файлов. Оригинал, названный «оригинальным» и нарисованным, названный «anotacao».
После этого я обновляю второе пространство имен с именами файлов, которые связаны с компонентом Winjs Flipview. Я использую второе пространство имен, потому что я хочу показать только изображения из подсекции исходного пространства имен, то есть из одного вопроса.
function AtualizarFotos() {
var id = document.getElementById("id_val_foto").innerHTML;
//atualizar namespaces com as fotos
var idq = id.split("_");
//quest is used to fectch the correct question, so it knows what photos to show
var quest = GetPergunta(idq[1]);
if (quest) {
if (FotosNP.ftList) {
FotosNP.ftList.splice(0, FotosNP.ftList.length);
quest.Fotos.forEach(function additem(value, index, array) {
FotosNP.ftList.push(value);
});
//updates a counter
document.getElementById("contaFotos").innerHTML = FotosNP.ftList.length;
}
}
В HTML У меня есть шаблон и fliview, связанный с пространством имен FotosNP. Если поставить «оригинал» в поле привязки, флипвью работает правильно. Если я поместил «anotacao» в поле привязки, изображение не будет загружено, даже если я закрою и открою наложение.
Обе фотографии сохраняются в одной папке: ms-appdata: /// local /.
Я проверил HTML, используя DOM-инспектор, и атрибут src верен. Я попытался использовать консоль Javascript и отобразить нарисованную фотографию на теге изображения, и он также не отображается.
Я пробовал установить тайм-аут перед обновлением пространства имен Flipview, потому что я утверждал, что это может быть какая-то задержка при записи на диск.
Я пробовал разные компоненты, а также использовал простой элемент img, и он не показывает фотографию.
Если закрыть и запустить приложение снова, и загружать сохраненные вопросы с фотографиями, фотографии отображаются правильно.
Что я делаю неправильно в файле пишут? Пожалуйста, помогите.