我使用文件输入和webkitdirectory加载了一个目录,如下所述.
<input id="file_input" type="file" webkitdirectory directory />
Run Code Online (Sandbox Code Playgroud)
选择目录后,我可以读取文件大小和其他信息.我的问题是如何使用DirectoryReader接口读取此目录.
我尝试使用下面的代码,但没有成功.results.length变为零.我错过了什么吗?
window.requestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, function(fs) {
var dirReader = fs.root.createReader();
var entries = [];
// Call the reader.readEntries() until no more results are returned.
var readEntries = function() {
dirReader.readEntries(function(results) {
// If no more results are returned, we're done.
if (!results.length) {
// Sort list by name of entry.
entries.sort(function(a, b) {
return a.name < b.name ? -1 :
b.name < a.name ? 1 : 0;
});
// listResults(entries); // Render …Run Code Online (Sandbox Code Playgroud) 我正在编写一个HTML5应用程序以在Chrome中运行,但它将在本地文件系统上(因此他们将通过双击html文件启动它).当我尝试访问文件系统时抛出错误,我认为这是因为它是本地文件.有没有办法让Chrome允许这个?
(注意:我确实得到弹出窗口,要求我允许应用程序永久存储,然后单击"确定".它仍然会抛出此错误)
以下代码抛出错误:
DOMException {message: "NotSupportedError: DOM Exception 9", name: "NotSupportedError", code: 9, INDEX_SIZE_ERR: 1, DOMSTRING_SIZE_ERR: 2…}
filetest.html
<!DOCTYPE html>
<html>
<head></head>
<body>
<script>
//File System handler
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
function onInitFs(fs) {
console.log('Opened file system: ' + fs.name);
}
function errorHandler(e) {
var msg = '';
switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
msg = 'QUOTA_EXCEEDED_ERR';
break;
case FileError.NOT_FOUND_ERR:
msg = 'NOT_FOUND_ERR';
break;
case FileError.SECURITY_ERR:
msg = 'SECURITY_ERR';
break;
case FileError.INVALID_MODIFICATION_ERR:
msg = 'INVALID_MODIFICATION_ERR';
break;
case FileError.INVALID_STATE_ERR:
msg = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个webapp,我正在尝试使用文件系统API访问目录.我需要在根据规范访问目录之前向用户请求配额.我应该这样做:
...
navigator.webkitPersistentStorage.requestQuota(PERSISTENT, 1024*1024,
function(gB){
window.requestFileSystem(PERSISTENT, gB, onInitFs, errorHandler);
}, function(e){
console.log('Error', e);
})
...
Run Code Online (Sandbox Code Playgroud)
每次我这样做,我收到一条**TypeError: Type error**消息.请问我做错了什么?提前致谢.
注意:已经定义了onInitFs和errorHandler我只是没有在这里包含代码.
我想知道 HTML5 的当前状态是否可以编辑本地文件。更准确地说,我的意思是:
file://),或者在最坏的情况下,由本地服务器提供我知道有 fileSystem API,但从我读到的内容来看,它似乎仅适用于 chrome 扩展?那么监听文件更改呢?
我还在trace.gl上注意到,可以创建点击后打开本地文本编辑器的链接(就像在 chrome 控制台中一样)。
是否可以重现我们可以看到的内容,trace.gl但结合访问本地文件系统和监听文件更改事件,以创建某种本地 IDE 为目标?
更精确地编辑:目标实际上是创建一个 IDE。想想代码 IDE (Eclipse ...) 的例子,它显示工作区中的每个文件和目录,并听取更改,可以实时读/写等。这就是我想要实现的。PS:如果需要,它可能是特定于浏览器的
我最终可能会在长时间运行的 Web 应用程序中处理以 Blob 为代表的大量数据。其中一些使用 XHR(缓存友好)获得,其他使用new Blob(...).
我主要关心的是如何管理这些斑点。我最初的想法是保留一些参考资料。但如果在应用程序的整个生命周期中将大量数据保留在内存中,那就很糟糕了。
关于如何在WP8平台上使用Cordova文件插件的文档严重缺乏.
我在Android,fireOS和iOS上都有一个应用程序,都使用文件插件查看目录内容,从我的webservice下载,保存和打开生成的文件,这些文件都使用以下代码:
function listDir() {
//console.log('listDir');
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
function gotFS(fileSystem) {
//console.log('gotFS. filesystem.root = ' + fileSystem.root.value);
fileSystem.root.getDirectory("MyFolder", { create: true, exclusive: false }, gotDir);
}
function gotDir(dirEntry) {
//console.log('gotDir');
// Get a directory reader
var directoryReader = dirEntry.createReader();
// Get a list of all the entries in the directory
directoryReader.readEntries(success, fail);
}
function success(entries) {
var i = 0, sb = '';
sb += '<ul data-role="listview" data-inset="true" id="pdfFiles">';
if (entries.length > 0) {
for (i = 0; …Run Code Online (Sandbox Code Playgroud) 在Chrome应用中,我使用JavaScript XHR从服务器下载blob内容(特别是Angular $ http GET,响应类型为'blob')
我该如何将其保存到chrome应用程序的文件系统?
目前在HTML5文件系统API上使用Angular包装器 https://github.com/maciel310/angular-filesystem
我不想向用户显示弹出窗口(因此我无法使用chrome.fileSystem. chooseEntry)
该chrome.fileSystem.requestFileSystemAPI仅受Kiosk专用应用程序支持.因此我使用的是HTML5 FileSystem API而不是chrome.
我正在使用以下代码来使XHR获取blob.
$http({
url: SERVER_URL+"/someVideo.mp4",
method: "GET",
responseType: "blob"
}).then(function(response) {
console.log(response);
fileSystem.writeBlob(response.name, response).then(function() {
console.log("file saved");
}, function(err) {
console.log(err);
});
}, function (response) {
});
Run Code Online (Sandbox Code Playgroud)
这是我的writeBlob方法
writeBlob: function(fileName, blob, append) {
append = (typeof append == 'undefined' ? false : append);
var def = $q.defer();
fsDefer.promise.then(function(fs) {
fs.root.getFile(fileName, {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
if(append) {
fileWriter.seek(fileWriter.length);
}
var truncated = false; …Run Code Online (Sandbox Code Playgroud) javascript google-chrome angularjs html5-filesystem google-chrome-app
我正在尝试为我的HTML5视频播放器添加离线功能.我试图将文件作为blob写入chrome文件系统,然后从那里读取它们.我相信我遇到的问题是文件实际上并没有被写入,只是文件名.由于我的下面的代码目前已经构成,它仍然有效,但仍然只有它永久连接到互联网.我的目标是将文件下载到文件系统中的永久目录,然后在互联网断开连接时继续播放.
$(document).ready(function() {
var dir = "http://www.kevmoe.com/networks/gsplayer/";
var fileextension = ".mp4";
var srcfiles = $.ajax({
//This will retrieve the contents of the folder if the folder is configured as 'browsable'
url: dir,
success: function(data) {
//List all .mp4 file names in the page
$(data).find("a:contains(" + fileextension + ")").each(function() {
var filename = $(this).attr("href").replace(window.location.host, "").replace("http://", "");
$("#container").append("<div id='div1' class='video'><video id='video1' class='vidarray' preload='none' poster='bkg.png'><source src='" + filename + "' type='video/mp4'></video></div>");
async: false;
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.PERSISTANT, 200000 * 1024 * …Run Code Online (Sandbox Code Playgroud) 我试图用 javascript 读取和写入文件。Nodejs 'fs' 不工作。我发现有一个等效的 HTML5 API。
相当于什么
fs.writeFile('my.file', filedata)
fs.readFileSync(__dirname + '/dir/leaves.file')
Run Code Online (Sandbox Code Playgroud)
在 HTML5 文件读取器 api 中
如何使用从相机获取的URL移动文件?
函数moveTo既不调用successCallback也不调用errorCallback.任何人都可以告诉我我做错了什么以及可能的解决方案是什么样的?
function successCallback(entry) {
console.log("New Path: " + entry.fullPath);
alert("Success. New Path: " + entry.fullPath);
}
function errorCallback(error) {
console.log("Error:" + error.code)
alert(error.code);
}
// fileUri = file:///emu/0/android/cache/something.jpg
function moveFile(fileUri) {
newFileUri = cordova.file.dataDirectory + "images/";
oldFileUri = fileUri;
fileExt = "." + oldFileUri.split('.').pop();
newFileName = guid("car") + fileExt;
// move the file to a new directory and rename it
fileUri.moveTo(cordova.file.dataDirectory, newFileName, successCallback, errorCallback);
}
Run Code Online (Sandbox Code Playgroud)
我使用的是Cordova 4.1.2版还安装了Cordova File Plugin
html5-filesystem ×10
javascript ×8
html ×3
cordova ×2
html5 ×2
angularjs ×1
blob ×1
filereader ×1
ide ×1
web-storage ×1