我创建了一个使用requestFileSystem的应用程序。一切正常。 添加新映像并将其存储在持久性本地文件系统中。
有人知道如何用toUrl()显示图像吗?
...
window.requestFileSystem(window.PERSISTENT, 5*1024*1024, function(fs){
fs.root.getDirectory(itemId, {create: false}, function(dirEntry) {
var dirReader = dirEntry.createReader();
var entries = [];
var readEntries = function() {
dirReader.readEntries (function(results) {
if (!results.length) {
listResults(entries.sort(), itemId);
} else {
entries = entries.concat(fsdatas.dir.toArray(results));
readEntries();
}
}, errorHandler);
};
readEntries();
});
}, errorHandler);
...
和
function listResults(entries, itemId) {
document.querySelector('#listRecordFiles-'+itemId).innerHTML = '';
var fragment = document.createDocumentFragment();
var i = 0;
entries.forEach(function(entry, i) {
i++;
var img = document.createElement('img');
img.src = entry.toURL();
fragment.appendChild(img);
});
document.querySelector('#listRecordFiles-'+itemId).appendChild(fragment);
}
输出结果为:
<img src="filesystem:http://domain.tld/persistent/1/image-test.jpg">
但浏览器上没有显示任何内容。
答案 0 :(得分:0)
以下示例是一段代码,负责读取保存在应用程序根目录中的图像,并显示在文档正文中。
请记住,在这种情况下,我使用navigator.camera.DestinationType。 DATA_URL 打开 PHOTOLIBRARY ,并使用 atob (ascii到二进制),所以带着 btoa (二进制到ascii)的图像
function myLoadFile(filename) {
var myDocument = document.querySelector("body");
filesystem.root.getFile(filename, {}, function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader();
reader.onload = function(e) {
var img = document.createElement('img');
// if you save the file with atob (ascii to binary), then:
img.src = "data:image/jpeg;base64,"+btoa(this.result);
// if you don't save the file without atob, then:
// img.src = "data:image/jpeg;base64,"+this.result;
myDocument.appendChild(img)
};
reader.readAsText(file);
}, errorHandler);
}, errorHandler);
}