我有很长的文件需要解析.因为它很长,我需要通过块来做大块.我试过这个:
function parseFile(file){
var chunkSize = 2000;
var fileSize = (file.size - 1);
var foo = function(e){
console.log(e.target.result);
};
for(var i =0; i < fileSize; i += chunkSize)
{
(function( fil, start ) {
var reader = new FileReader();
var blob = fil.slice(start, chunkSize + 1);
reader.onload = foo;
reader.readAsText(blob);
})( file, i );
}
}
Run Code Online (Sandbox Code Playgroud)
运行后我只看到控制台中的第一个块.如果我将'console.log'更改为jquery附加到某个div,我只看到该div中的第一个块.其他块怎么样?如何使它工作?
我有点像绘图应用程序.用户可以保存项目然后加载它们.当我第一次加载一个文件(例如project1.leds)在应用程序中进行一些更改但没有保存它然后再次加载相同的文件(project1.leds)没有任何反应.我不能多次加载同一个文件.如果我加载其他文件,它的工作.
码:
$("#menu-open-file").change(function(e){
var data=[];
var file = null;
file = e.target.files[0];
console.log(file)
var reader = new FileReader();
reader.onload = function(e){
data=JSON.parse(reader.result);
x=data[0].SIZE[0];
y=data[0].SIZE[1];
if(x==15) x=16;
if(x==30) x=32;
if(x==60) x=64;
if(y==15) y=16;
if(y==30) y=32;
if(y==60) y=64;
createLeds(x,y,data,false,false);
clearActiveTools();
var svg = $('#contener').find('svg')[0];
svg.setAttribute('viewBox','0 0 ' + x*20 + ' ' + y*20);
$("#contener").css("width",x*20).css("height",y*20);
$("#contener").resizable({
aspectRatio: x/y,
minHeight: 200,
minWidth: 200,
});
wiFirst = $("#contener").width();
hiFirst = $("#contener").height();
}
reader.readAsText(file);
});
Run Code Online (Sandbox Code Playgroud)
我可以删除/删除缓存文件吗?它甚至在浏览器中缓存了吗?
我正在努力解决以下问题.使用javascript我想更改文件内容的字符集并将此内容显示给用户.
我有一个输入:文件表单.在改变时我正在阅读内容
$('#form input:file').change(function(event){
file = this.files[0];
reader = new FileReader();
reader.onload = function(event) {
result = event.target.result.replace(/\n/g,'<br />');
$('#filecontents').html(result);
});
reader.readAsText(file);
})
Run Code Online (Sandbox Code Playgroud)
该文件位于Windows-1251中.我想将文件的内容转换为另一种编码,然后将其呈现给用户.
这有可能用javascript实现吗?
问候
我正在使用Javascript FileReader在浏览器中加载图像:
e = e.originalEvent;
e.dataTransfer.dropEffect = 'copy';
this.documentFile = e.dataTransfer.files[0];
var reader = new FileReader();
reader.onloadend = function () {
if (reader.result) {
console.log(reader);
$('#theImage').attr('src', reader.result);
}
};
reader.readAsDataURL(this.documentFile);
Run Code Online (Sandbox Code Playgroud)
这很好用.我现在想获得图像的原始文件名,但我不知道如何在互联网上查找我也找不到任何东西?
有人知道如何通过FileReader获取文件名吗?欢迎所有提示!
你可以帮我解决以下问题.
目标
在客户端(通过JS和HTML5类在浏览器中)逐行读取文件,而不将整个文件加载到内存中.
脚本
我正在处理网页,它应解析客户端的文件.目前,我正在阅读本文中描述的文件.
HTML:
<input type="file" id="files" name="files[]" />
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$("#files").on('change', function(evt){
// creating FileReader
var reader = new FileReader();
// assigning handler
reader.onloadend = function(evt) {
lines = evt.target.result.split(/\r?\n/);
lines.forEach(function (line) {
parseLine(...);
});
};
// getting File instance
var file = evt.target.files[0];
// start reading
reader.readAsText(file);
}
Run Code Online (Sandbox Code Playgroud)
问题是FileReader立即读取整个文件,这会导致大文件崩溃的选项卡(大小> = 300 MB).使用reader.onprogress不能解决问题,因为它只会增加结果,直到它达到极限.
发明一个轮子
我已经在互联网上做了一些研究,并没有找到任何简单的方法来做到这一点(有很多文章描述了这个确切的功能,但在服务器端为node.js).
作为解决它的唯一方法,我只看到以下内容:
File.split(startByte, endByte)方法)但我最好使用现有的东西来避免熵增长.
当我运行应该从Eclipse中的文件读取的Java应用程序时java.io.FileNotFoundException,即使文件位于正确的目录中,我也会得到一个.我可以从命令行编译并运行应用程序就好了; 该问题仅发生在Eclipse中,具有多个项目和应用程序.我是否需要在运行配置或构建路径中更改设置以使其正确查找文件?
对于离线存储数据,WebApp可以使用:
但显然没有文件存储.当然,有一个基于清单的缓存,但它只是一个缓存,不应该用作用户数据存储.
这是否意味着WebApp的用户被迫使用某种云文件存储?
有没有办法在用户的本地机器上保存大文件?或者也许某种方式来选择本地文件夹Web应用程序可用于存储用户数据?
编辑.安全.HTML5已经能够将大部分数据写入用户的本地计算机.如果浏览器提供另一个基于文件的抽象来存储数据,我没有看到任何安全问题.它可以是一些虚拟机,虚拟文件系统等等.
嗯,我想,有可能编写JS文件系统并将其存储为SQL中的blob ...
我正在使用FileReader API来读取多个文件.
<html> <body>
<input type="file" id="filesx" name="filesx[]"
onchange="readmultifiles(this.files)" multiple=""/>
<div id="bag"><ul/></div>
<script>
window.onload = function() {
if (typeof window.FileReader !== 'function') {
alert("The file API isn't supported on this browser yet.");
}
}
function readmultifiles(files) {
var ul = document.querySelector("#bag>ul");
while (ul.hasChildNodes()) {
ul.removeChild(ul.firstChild);
}
function setup_reader(file) {
var name = file.name;
var reader = new FileReader();
reader.onload = function(e) {
var bin = e.target.result; //get file content
// do sth with text
var li = document.createElement("li");
li.innerHTML …Run Code Online (Sandbox Code Playgroud) 现在大多数浏览器都支持IndexedDB将数据/文件直接存储为File,Blob或ArrayBuffer.
此代码将IDB密钥"File1"保存为文件
<input type="file" id="userfile" />
var a = document.getElementById("userfile");
var b = a.files[0];
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用以下代码直接将此文件保存到IDB
//LocalForage is a library for indexedDB developed by Mozilla
//Note: localforage._config.driver=asyncStorage (IDB method)
function run(){
//"File1" = IDB data table key and b=value
localforage.setItem("File1", b, function(err, value) {
console.log(err)
});
}
a.onchange = function(){
run()
}
Run Code Online (Sandbox Code Playgroud)
此代码将IDB密钥"BlobFile"保存为Blob
mb = new Blob([b],{type:b.type});
function runB(){
localforage.setItem("BlobFile", mb, function(err, value){
console.log(err)
});
}
a.onchange = function(){
runB()
}
Run Code Online (Sandbox Code Playgroud)
我想知道将文件存储到IDB的最佳做法是什么.(文件/斑点/ ArrayBuffer) …
是否可以读取AngularJS中的文件?我想将文件放入HTML5画布中进行裁剪.
我在考虑使用指令?这是我想要放入我的指令的javscript代码:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#blah').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
Run Code Online (Sandbox Code Playgroud) filereader ×10
javascript ×8
html5 ×5
file ×2
jquery ×2
angularjs ×1
blob ×1
canvas ×1
client-side ×1
eclipse ×1
encoding ×1
exception ×1
fileapi ×1
filesystems ×1
filewriter ×1
html ×1
indexeddb ×1
io ×1
java ×1
parsing ×1