html 上传文件 js,javascript HTML5文件上传FileReader API

文件上传功能现在是越来越普遍,所有的社交网站,媒体网站,比如优酷视频,微博等,都提供了上传图片,上传视频等功能。但过去WEB程序员都很清楚,用HTML表单上传文件是很麻烦的事情,特别是你想了解一下用户上传的文件的一些属性,必须等它上传完成后才能知道。

未知的东西上传到服务器上,有可能产生安全问题,也有可能体积太大,超过允许,浪费空间。现在好了,WEB技术在进步,HTML5带来了很多好东西。这个FileReader API就能让你在用户上传之前就能获取上传文件的一些基本属性。

HTML代码

这个FileReader API 的工作原理和 File API 一样,需要使用input[type="file"] 元素:

在File API这篇文章里有详细的关于能读取到的文件的相关信息,比如地址,体积,尺寸大小,文件类型等等。

JavaScript

这个例子中我们用input表单域上传一张图片,当用户在自己的电脑里选中一张图片后,这个图片会被显示到页面上:

document.getElementById('upload-file').addEventListener('change', function() {

var file;

var destination = document.getElementById('destination');

destination.innerHTML = '';

// 循环用户多选的文件

for(var x = 0, xlen = this.files.length; x < xlen; x++) {

file = this.files[x];

if(file.type.indexOf('image') != -1) { // 非常简单的交验

var reader = new FileReader();

reader.onload = function(e) {

var img = new Image();

img.src = e.target.result; // 显示图片的地方

destination.appendChild(img);

};

reader.readAsDataURL(file);

}

}

});

这个例子里,我们使用FileReader里的readAsDataURL方法将图片内容转换成base64编码的字符串,然后使用图片的data URI方式显示它。其它的FileReader读取方法还有readAsText, readAsArrayBuffer和readAsBinaryString等

有了这个FileReader API,我们就可以避免用户先将文件上传到服务器,在浏览器客户端我们就可以进行操作。这些在上传到服务器前的预处理是很有必要的。

以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用HTML5 FileReader API读取Excel文件,可以使用以下步骤: 1. 在HTML页面中添加一个文件上传控件,例如: ```html <input type="file" id="fileInput" /> ``` 2. 使用JavaScript获取文件上传控件,并添加一个`change`事件监听器来获取用户选择的文件: ```javascript const fileInput = document.getElementById('fileInput'); fileInput.addEventListener('change', handleFileSelect, false); function handleFileSelect(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = handleFileLoad; reader.readAsBinaryString(file); } ``` 在这个示例中,我们获取了文件上传控件元素,并为其添加了一个`change`事件监听器。当用户选择了一个文件时,事件监听器会调用`handleFileSelect`函数来处理文件。 3. 在`handleFileSelect`函数中,我们创建了一个`FileReader`对象,并使用`readAsBinaryString`方法将文件读入内存: ```javascript function handleFileSelect(event) { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = handleFileLoad; reader.readAsBinaryString(file); } ``` 注意,我们使用了`readAsBinaryString`方法来读取二进制数据,因为Excel文件是二进制文件。 4. 一旦文件被读入内存,`FileReader`对象的`onload`事件将会被触发。我们可以在事件处理函数中访问文件的二进制数据: ```javascript function handleFileLoad(event) { const data = event.target.result; const workbook = XLSX.read(data, { type: 'binary' }); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; const jsonData = XLSX.utils.sheet_to_json(sheet, { header: 1 }); console.log(jsonData); } ``` 在这个示例中,我们使用`XLSX.read`方法来将二进制数据转换成一个`Workbook`对象。然后,我们选择要读取的工作表,并将其转换成JSON格式的数据。最后,我们将数据打印到控制台上。 需要注意的是,这个示例代码只是一个简单的例子。在实际应用中,你可能需要处理更复杂的Excel文件,例如包含多个工作表或带有复杂格式的表格。你需要根据具体情况进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值