所以我基本上是这样做的(简化的)......
var script = '...some JS code...',
blob = blob = new Blob([script]),
worker = [];
for (var i=0; i<10; i++) {
worker[i] = new Worker(URL.createObjectURL(blob));
}
Run Code Online (Sandbox Code Playgroud)
...动态创建同一个 JS 文件的 10 个实例并将其传递给 10 个 Web Workers(然后控制器/委托者在 10 个任务之间划分特定任务以进行进一步处理 - 但这对于目前这个问题并不重要) 。
这一切都工作正常,但在检查 Chrome 开发人员工具(网络)中的代码后,我发现 Chrome 确实创建了同一文件的 10 个单独版本(花费额外的初始化毫秒数 - 可以看到创建的每个附加文件的瀑布)它是同一个文件。
如果我URL.createObjectURL(blob)
在循环之外进入一个单独的变量,然后将该变量传递给循环中的工作人员 - 它不再正常工作 - 似乎所有工作人员都共享完全相同的 JS 文件(即使我希望每个工人都会启动自己单独的进程)。
有任何想法吗?我可以以某种方式URL.createObjectURL(blob)
只创建一次,然后以某种方式复制/克隆它吗?不确定这是否会有所帮助或使事情有所不同?
我正在开发Chrome扩展程序,我想检查文件是否存在.我不想对文件做任何事情:我只想检查它的存在.
如果我使用XMLHttpRequest它不起作用,因为出于安全原因不允许它.所以我必须使用HTML5 FS API.问题是此API没有方法来检查文件是否存在.
我有一个名为"fileExists"的变量,我想知道如何将其值从false更改为true或从true更改为false,具体取决于文件的存在(由URL确定).
谢谢.
我在移动网络应用程序上使用HTML5文件api进行图像上传实用程序.
我正在使用相机拍摄图像并将其上传到服务器.
问题是,如果我捕获肖像图像,上传的图像会自动转换为横向.
我在indexeddb文件中有一些数据,我想让我的用户下载该数据以导入到其他应用程序中.我可以使用Blob轻松完成此操作:
var blob = new Blob(['herp!'], {type: 'application/octet-stream'});
var iframe = document.createElement("iframe");
iframe.id = "myiframe";
iframe.style.display = "none";
iframe.src = window.webkitURL.createObjectURL(blob); // needs a revokeObjectURL
$('#dlplaceholder').append(iframe);
Run Code Online (Sandbox Code Playgroud)
Blob的正确类型参数是关键:如果我将其设置为text/plain,则不会下载该文件.如果我有iframe的高度和宽度以及块的显示类型,我可以在iframe中看到数据.
但是,我想要从我的数据库中使用多个值构建一个文件,并且每个值都可以很大,并且我可以有很多条目.我可以在Blob构造函数中连接这些值,但我担心在内存中有这么多数据我会爆炸.
所以我决定在沙盒系统中创建一个文件,并将每个值附加到它,并使用该文件而不是blob作为createObjectURL的参数.但是当我这样做时,它不会下载; 它的行为就像我使用一种text/plain类型的Blob代码一样.这是代码:
var fname = 'mybadtest'; //UPDATE here's the problem: needs .bin file extension
var init_fs = function ( fs ) {
// first, write to the sandboxed file
fs.root.getFile(fname, {create: true, exclusive: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
// write to file completed. now use the file for …
Run Code Online (Sandbox Code Playgroud) 我已经通过fileSystem API创建了文件'log.txt'
function initFS(grantedBytes) {
window.requestFileSystem(window.PERSISTENT, grantedBytes, function (filesystem) {
fs = filesystem;
fs.root.getFile('log.txt', { create: true, exclusive: true }, function (fileEntry) {
// fileEntry.isFile === true
// fileEntry.name == 'log.txt'
// fileEntry.fullPath == '/log.txt'
console.log(fileEntry.fullPath);
}, errorHandler);
}, errorHandler);
}
initFS(1024*1024);
Run Code Online (Sandbox Code Playgroud)
而且不完全了解它的结构.有没有办法从Windows资源管理器中探索此文件,并在文件系统中查看它?
javascript html5 google-chrome html5-filesystem google-chrome-app
我如何了解位于通过HTML5 API公开的本地文件系统中的文件的大小?
我期待着一些事情,
fileSystem.root.getFile(path, { create: false }, function (fileEntry) {
// fileEntry.size - ????????
});
Run Code Online (Sandbox Code Playgroud)
......可用,但没有找到类似的东西.
我正在 HTML5 中做一个非常标准的拖放功能。但是,由于某种原因,e.target.dataTransfer 显示为未定义。我是 JavaScript 新手。任何帮助将不胜感激。
这是java脚本。
<script src="jquery-2.1.4.min.js"></script>
<script>
$(document)
.ready(
function() {
jQuery.event.props.push('dataTransfer');
if (!!window.FileReader) {
// Browser suppports FILE API.
// is XHR2 available?
var xhr = new XMLHttpRequest();
if (xhr.upload) {
$('#drag-and-drop-zone').bind('dragover',
function(e) {
e.preventDefault();
e.stopPropagation();
$(this).addClass('drag-over');
return false;
});
$('#drag-and-drop-zone').bind('dragleave',
function(e) {
e.preventDefault();
e.stopPropagation();
$(this).removeClass('drag-over');
return false;
});
$('#drag-and-drop-zone')
.bind(
'drop',
function(e) {
e.preventDefault();
e.stopPropagation();
$(this).removeClass(
'drag-over');
alert(this.id);
alert('This shows up as 0. Why? . '
+ e.dataTransfer.files.length);
return false;
});
}
} else { …
Run Code Online (Sandbox Code Playgroud) 我正在使用文件输入元素从android浏览器捕获图像。现在,我想将Blob数据转换为ImageData,以便可以使用来将其呈现在画布上putImageData
。
<!DOCTYPE html>
<html>
<body>
<input type="file" id="file" />
</body>
<script>
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
var selFile = files[0];
var reader = new FileReader();
reader.onload = function(e) {
var blobData = e.target.result;
console.log(e.target.result);
};
reader.onerror = function(e) {
console.log(e);
};
reader.readAsArrayBuffer(selFile);
}
document.getElementById('file').addEventListener('change',handleFileSelect, false);
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如何将blobData转换为ImageData?提前致谢。
html5 getimagedata html5-canvas html5-filesystem putimagedata
我正在编写一个扩展程序,它可以在下载文件后(通过正常的下载过程)理想地读取文件。那可能吗?我可以通过 chrome.downloads 操作获取文件名,但我找不到读取实际字节的方法。我不需要写或移动它们,只需阅读。
javascript google-chrome google-chrome-extension html5-filesystem
我正在尝试使用文件系统 API 创建一个文件..我用谷歌搜索并得到了一个代码
function onFs(fs) {
fs.root.getFile('log.txt', {create: true, exclusive: true},
function(fileEntry) {
fileEntry.getMetaData(function(md) {
}, onError);
},
onError
);
}
window.requestFileSystem(TEMPORARY, 1024*1024 /*1MB*/, onFs, onError);
Run Code Online (Sandbox Code Playgroud)
任何人都可以说出作为函数参数传递的 fs 是什么..
请给我推荐一个很好的例子...
html5-filesystem ×10
javascript ×6
html5 ×5
html ×3
getimagedata ×1
html5-canvas ×1
ios6 ×1
putimagedata ×1
web-worker ×1