js读写php文件,在js中如何读取本地文件

下面我就为大家分享一篇js读取本地文件的实例,具有很好的参考价值,希望对大家有所帮助。

如何用在浏览器端预览本地文件?

今天的主题是使用浏览器预览本地文件。

由于浏览器安全策略的限制,javascript程序不能自由地访问本地资源,这是对用户信息安全来说,是一项不得不遵守的准则。假如网络上的javascript程序可以自如地访问用户主机的本地资源,那么浏览器用户将毫无安全可言。尽管有这个安全限制,但是在得到用户允许的情况下,浏览器还是可以访问本地资源的。

获得用户允许的方法就是通过标签来让用户手动选择文件,这一过程就是用户授予访问权限的过程。然后 使用获得File 对象通过URL.createObjectURL(file)转换为文件url, 就可以传递给类似y于img,video,audio等标签使用了。我将本地文件转换为url 的功能封装成了一个类。function LocalFileUrl(){

var _this = this;

this.input_id = 'input_getLocalFile'+ Math.round(Math.random() * 1000);

$("body").append("");

this.urls=[];

var _this = this;

$("#" + this.input_id).change(function(e){

console.log("change");

//如果_this.urls 不为空,则释放url

if(_this.urls){

_this.urls.forEach(function(url,index,array){

URL.revokeObjectURL(url.url);//一经释放,马上将无法使用这个url的资源

});

_this.urls = [];

}

$(this.files).each(function(index,file){

var url = URL.createObjectURL(file);

_this.urls.push({url:url,file:file});

});

typeof _this.getted == 'function' && _this.getted(_this.urls);

})

}

/*

参数说明:getted:function(urls){}

urls是一个url对象数组。[url]

url = {

url:url, //选取的文件url

file:file //选取的文件对象引用

}

*/

LocalFileUrl.prototype.getUrl = function(getted){

this.getted = getted;

$("#"+ this.input_id).click();

}

使用方法:var localFileUrl = new LocalFileUrl();//实例化对象

//触发读取,弹出文件选择框,并且监听文件选择事件。

localFileUrl.getUrl(function(urls){

urls.forEach(function(item,index,array){

$("body").append("

"+index+"----"+item.url+"

")

})

})

使用jQuery 的promise对象改写

这种方式的好处是可以使用链式写法,并且可以绑定多个done事件处理函数,执行顺序按照绑定顺序。function LocalFileUrl(){

this.dtd ={};

this.input_id = 'input_getLocalFile'+ Math.round(Math.random() * 1000);

$("body").append("");

this.urls=[];

var _this = this;

$("#" + this.input_id).change(function(e){

//如果_this.urls 不为空,则释放url

if(_this.urls){

_this.urls.forEach(function(url,index,array){

URL.revokeObjectURL(url.url);//一经释放,马上将无法使用这个url的资源

});

_this.urls = [];

}

$(this.files).each(function(index,file){

var url = URL.createObjectURL(file);

_this.urls.push({url:url,file:file});

});

//传入一个可选的参数数组

_this.dtd.resolveWith(window,new Array(_this.urls));

})

}

/*

返回一个jquery 的promise 对象,可以绑定done()事件。done(urls)接收一个urls数组

{

url:url,

file:file// 选取的文件对象

}

*/

LocalFileUrl.prototype.getUrl = function(){

this.dtd = $.Deferred();

$("#"+ this.input_id).click();

return this.dtd.promise();

}

使用方式var localFilrUrl = new LocalFileUrl();

// 绑定done事件

localFileUrl.getUrl().done(function(urls){

urls.forEach(function(item,index,array){

$("body").append("

"+index+"----"+item.url+"

")

})

}).done(function(){

console.log("完成");

}).done(function(){

alert("已经读取了本地文件路径");

})

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552517.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php mvc教程 文档,PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]

PHP培训教程教你快速打造PHP MVC框架[PHP基础教程]简介MVC框架在现在的开发中相当流行,不论你使用的是JAVA,C#,PHP或者IOS,你肯定都会选择一款框架。虽然不能保证100%的开发语言都会使用框架,但是在PHP社区当中拥有最多数量的MVC框架。今天你…

java分页代码思路,记录--java 分页 思路 (hibernate关键代码)

有时会脑袋蒙圈,记录下分页的思路下面代码是hibernate的分页,其分页就是从第几条数据为起点,取几条数据。比如在mysql中的limit(5,10)取的就是第6条到第10条在下面代码中的page是页数、size是每页多少条数据String hql"from User";…

php查看运行时间和内存,php 统计时间和内存的使用情况

跳至/*** 记录和统计时间(微秒)和内存使用情况* 使用方法:** G(begin); // 记录开始标记位* // ... 区间运行代码* G(end); // 记录结束标签位* echo G(begin,end,6); // 统计区间运行时间 精确到小数后6位* echo G(begin,end,m); // 统计区间内存使用情况* 如果end标记位没有定…

宝塔php漏洞,[安全预警]关于最近宝塔闹得很厉害的PMA漏洞BUG

文章前言在2020年8月23日的下午有个憨憨管理在我群艾特全员 说宝塔爆出漏洞了赶快更新吧!影响机器需同时满足以下所有条件1、软件版本为Linux面板7.4.2 或者Windows面板6.8.02、开放888且未配置http认证,3、安装了phpmyadmin,mysql数据库不受…

求十个学生的平均成绩java,JAVA 声明一个数组,存一个学生的五门成绩。求该学生的总成绩、平均成绩。...

JAVA 声明一个数组,存一个学生的五门成绩。求该学生的总成绩、平均成绩。mip版 关注:116 答案:3 悬赏:30解决时间 2021-01-26 06:39已解决2021-01-25 17:54声明一个数组,存一个学生的五门成绩。求该学生的总成绩、平均成绩。JAVA知识最佳答案2021-01-25 18:12public class S…

php伪静态限制网页播放视频,学习猿地-php伪静态后html不能访问怎么办

php伪静态后html不能访问的解决办法:首先判断文件是否存在;然后设置存在则不rewirte,不存在且符合规则才rewrite;最后修改htaccess文件即可。具体问题:PHP伪静态后不能访问纯html文件.htaccess文件RewriteEngine onRew…

oracle binary_integer pls_integer,oracle中binaryinteger与plsinteger的区别

oracle中binaryinteger与plsinteger的区别 Oracle 中 Binary_Integer 与 Pls_Integer 的区别Binary_Integer 与 Pls_Integer 都是整型类型. Binary_Integer 类型变量值计算是由 Oracle 来执行,不会出现溢出,但是执行速度较慢,因为它是由 Orac…

梁单元分析matlab,[FEM][有限元][编程][Matlab][Code by myself] 2D Timoshenko梁单元

(有空和小伙伴一起写写有限元程序)程序作者 ( Author )JiDong Cui (崔济东)1, XueLong Shen (沈雪龙)21.广州容柏生建筑结构设计事务所;2.华南理工大学建筑设计研究院基本概念 ( Concept )欧拉梁单元基于一定的假设(Kirchhoff假设),在梁的高度远小于其跨…

oracle保存type类型,oracle type类型

--创建类型说明***********************************************************create or replace type dept_type as object(--成员变量h_deptno number(2),h_dname varchar2(14),h_loc varchar2(13),--成员函数、过程member procedure changedept(name in varchar2,loc in var…

Oracle函数的信息,Oracle中获取会话信息的两个函数分享

1、 USERENV(OPTION)  返回当前的会话信息.OPTION‘ISDBA‘若当前是DBA角色,则为TRUE,否则FALSE.OPTION‘LANGUAGE‘返回数据库的字符集.OPTION‘SESSIONID‘为当前会话标识符.OPTION‘ENTRYID‘返回可审计的会话标识符.OPTION‘LANG‘返回会话语言名称的ISO简记.OPTION‘INS…

oracle分组后伪列,Oracle伪列和伪表和分组函数(row_number,Rank)

oracle的伪列以及伪表oracle系统为了实现完整的关系数据库功能,系统专门提供了一组成为伪列(Pseudocolumn)的数据库列,这些列不是在建立对象时由我们完成的,而是在我们建立时由Oracle完成的。Oracle目前有以下伪列:一、伪列&#…

linux内核分为四个子系统,linux操作系统的内核有哪几个子系统构成,简要说明各子系统的作用...

Linux是一个一体化内核(monolithic kernel)系统。“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。一个内核不是一套完整的操作系统。一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux。设备驱动程序可以完全访问硬…

linux运行搜狗拼音,Linux 搜狗输入法的安装(Ubuntu版)

1、首先从搜狗官网下载搜狗输入法Linux版本的安装包2、按ctrl alt T 打开Linux终端3、安装搜狗输入法: sudo dkpg -i xxx.deb, 如果报错,主要是由于两个原因:a、权限不够,可以通过获取root权限,命令‘su’;…

2023年腾讯云轻量应用服务器测评2核2G4M带宽

腾讯云轻量应用服务器测评2核2G4M带宽88元一年,2核CPU、2G内存、3M带宽,腾讯云轻量应用服务器(Tencent Cloud Lighthouse)是一款开箱即用的云服务器产品,面向轻量应用场景,旨在为中小企业和开发者提供便捷高…

linux 运行unix elf,在Linux中ELF可执行问题

我在Linux上有一些关于ELF可执行文件的奇怪问题.这是我的系统(uname -a):Linux 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1deb8u2 (2016-01-02) x86_64 GNU/Linux我有以下程序(test.asm),我使用NASM组装它:; program just exits with code 0 using Li…

linux配置远程计算机别名没用,linux – `ssh foo“”`没有加载远程别名?

摘要:为什么会失败$ssh foo R --version | head -n 1bash: R: command not found但这成功了$ssh foo grep -nHe bashrc ~/.bash_profile/home/me/.bash_profile:3:# source the users .bashrc if it exists/home/me/.bash_profile:4:if [ -f "${HOME}/.bashrc&…

linux修改upd53端口,Centos iptables打开端口53

我在我的centos机器上打开端口53时遇到问题,用于DNS配置.这是我的iptables配置-A INPUT -p udp -m udp --sport 53 -j ACCEPT-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT当我运行机器的nmap扫描时,只有端口80显示为打开.我错过了什么吗?编辑:完全ipta…

centos arm linux gcc,CentOS安装arm-linux-gcc交叉编译器

(注:首先需要明确需要安装centos系统的位数,即是32位的还是64位的。)1、下载并解压文件:下载arm-linux-gcc-4.4.3.tgz到任意的目录下,进入这个文件夹输入命令:# tar xvzf arm-linux-gcc-4.4.3.tgz –C / 【解压文件到…

深度linux deepin 12.12,Linux Deepin 12.12 Beta 发布

一、概述两个月前,我们发布了搭载独立开发的“深度桌面环境”的 Linux Deepin 12.12 Alpha 版本。现在,Linux Deepin 12.12 Beta 版本来了!Beta 版本集成了 Linux Deepin 两个多月以来的工作成果,带来了许多激动人心的新功能与特性…

linux c 编程手册,Linux C/C++编程手册查阅方法

Linux Programmers Manual & User Commandshttps://www.kernel.org/doc/man-pages/ 搜索框输入epoll调用搜索引擎查找在线搜索查看man手册(比如查epoll),可以直接收藏,方便下次点击搜索:http://global.bing.com/search?qsite:man7.org epollThe Linux Kernel APIhttps://w…