html无法操作本地文件,HTML5 关于本地操作文件的方法

由于传统 b/s 开发出于安全性的考虑,浏览器对于本地文件的操作权限几乎没有,用户想要操作一个文件基本都是采用先上传到服务器,

再回显给浏览器供用户编辑,裁剪等的方法,这种方式虽然可行,但其对于服务器,对于用户体验,都不是很友好

下面笔者就给出 H5 JS 最新在本地操作文件的方法

文件操作

/**

* 将本地图片件转化为 img 标签可以识别的 src

* @param file 从 input[type=file] 表单中获取的文件对象

* @returns 可以直接作为 img 标签的 src 属性值的对象

*/

var fileToImgSrc = function (file) {

if (window.URL) return window.URL.createObjectURL(file);

if (window.windcreateObjectURL) return window.createObjectURL(file);

if (window.webkitURL) return window.webkitURL.createObjectURL(file);

};

/**

* 将本地文件转化为 base64 编码字符串

* @param file 从 input[type=file] 表单中获取的文件对象

* @param fn 回调方法,读取完成后执行

*/

var fileToBase64 = function (file, fn) {

var reader = new FileReader();

reader.onload = function () {

fn(reader.result);

};

reader.readAsDataURL(file);

}

/**

* 将 base64 编码的字符串 转化为 blob 对象

* @param base64Str base64 编码的字符串

* @returns {Blob} 文件对象

*/

var base64ToBlob = function (base64Str) {

var base64StrArr = base64Str.split(",");

var byteArr = atob(base64StrArr[1]);

var lengths = byteArr.length;

var utf8Arr = new Uint8Array(lengths);

while (lengths--) utf8Arr[lengths] = byteArr.charCodeAt(lengths);

return new Blob([utf8Arr], { type: base64StrArr[0].split(/;|:/)[1] });

};

/**

* 由于使用了比较新的 API, 旧版浏览器可能会存在一定兼容性的问题,建议将浏览器更新到较为新的版本

* @type {HTMLElement}

*/

var inpout = document.getElementById("file");

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

inpout.addEventListener("change", function (ev) {

var file = this.files[0]; // 获取 input 表单的文件对象

// img.src = fileToImgSrc(file); // 将图片回显

fileToBase64(file, function (base64Str) {

console.log(base64Str); // 读取文件为 base64 字符串

var blob = base64ToBlob(base64Str); // 再次转化为文件

img.src = fileToImgSrc(blob); // 再次回显

})

});

easyui 加载本地json 文件的方法

easyui 加载本地json 文件的方法 2017年12月15日 17:18:07 vivian_hnd 阅读数 2155 https://blog.csdn.net/vivian_wang07/a ...

HTML5实现本地JSON文件的读写

参考: 使用HTML5来实现本地文件读取和写入  (FileReader读取json文件,FileSaver.js保存json文件) w3school 标签 FileRead ...

【转】Excel-VBA操作文件四大方法之三

三.利用FileSystemObject对象来处理文件 FileSystemObject对象模型,是微软提供的专门用来访问计算机文件系统的,具有大量的属性.方法和事件.其使用面向对象的“object. ...

Windows编程中各种操作文件的方法

windows编程中文件操作有以下几种常见方法:1.C语言中文件操作.2.C++语言中的文件操作.3.Win32 API函数文件操作.4.MFC CFile类文件操作.5.MFC CFileDialo ...

springboot访问服务器本地静态文件的方法

一.继承WebMvcConfigurerAdapter,重写addResourceHandlers,在registry里面配置访问路径和映射到的服务器本地路径. import org.springfr ...

PHP中常用操作文件的方法

文件夹的创建: mkdir系统函数,第一个参数是路径,第二个参数是权限,第三个参数是是否递归创建,默认权限是0777最大权限,在windows下没有所谓的权限,在linux下可以设置权限,如果目录存在 ...

Html5选择本地视频音频文件播放

...

解决ajax chrome禁止本地浏览时加载本地其他文件的方法

在chrome快捷键右键--属性 “ --allow-file-access-from-files ”,前面用空格隔开.然后应用--确定.

C#操作文件夹及文件的方法的使用

本文收集了目前最为常用的C#经典操作文件的方法,具体内容如下:C#追加.拷贝.删除.移动文件.创建目录.递归删除文件夹及文件.指定文件夹下面的所有内容copy到目标文件夹下面.指定文件夹下面的所有内容 ...

随机推荐

centos终端中mysql中文显示乱码的处理

http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf-8-in-my-cnfhttp ...

MySQL架构

一.MySQL逻辑架构         第一层,即最上一层,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等.         ...

SQL Server Insert时开启显式事务

如果没法避免一条一条的写入,那么在处理前显示开启一个事务 begin tran  在处理完成后 commit 这样也要比不开显示事务会快很多! while i < 10000begin inse ...

数据库内置视图以及常见的DBMS开发包

如果想了解oracle运行的一些数据信息,oracle有一些视图可以供我们查询,通过这些内置的视图我们可以了解数据库 运行的一些信息,比如数据库文件存在什么地方.有哪些表空间.表空间的利用率.orac ...

java调用dll文件中的类型转换

char *转String   (env)->NewStringUTF("the content you want to type in"); char *转jbyteArr ...

js与后台交互详述(入门篇)

很多新手前端在初期学习的时候往往把注意力放在如何编写页面,如何编写效果上,群里有个朋友问我js是如何与后台交互的,我简单的说一下. 首先需要知道两个东西,一个是客户端,一个是服务器,客户端其实就是我们 ...

Windows Powershell脚本执行

在cmd下执行powershell进入shell模式: 变量定义:$i = 10 $a = ifconfig | findstr "192" Windows下的命令都可以执行如: ...

Java-获取年月日对应的天干地支

一.概述 本次是以java语言开发为例,计算出年月日对应的天干地支. 二.代码 public class MyDate { /** * 对于年月日的天干地支 */ private int year_g ...

Quartz的基本使用之入门(2&period;3&period;0版本)

一.Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自 ...

websphere部署war包

通过websphere部署以及打包成war的web项目. (1)安装配置war包,部署项目 登录websphere,进入websphere主页(依次选中) Applications -->   ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值