热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

file是什么文件格式(file格式转换方式)

前言在如今的项目开发过程中,上传图片或者上传头像已经变成了非常常见的操作。一般的,都需要在向后台上传图片之前,在页面中预览一下用户选择的图片。上传头像只需要预览一张图片,如果是上传
前言

在如今的项目开发过程中,上传图片或者上传头像已经变成了非常常见的操作。一般的,都需要在向后台上传图片之前,在页面中预览一下用户选择的图片。上传头像只需要预览一张图片,如果是上传图片至相册功能,则需要预览用户选择的多张图片。这样的操作在h5页面中要如何实现呢?本文系统的教大家认识h5为我们提供的files类和file类,这两个类在现代项目开发中起着举足轻重的作用。




一、html5为文件域新增的属性

html5为文件域新增了下列两个属性:



  • multiple,设置文件域是否可以同时选择多个要上传的文件。这是一个没有取值的放置性属性,书写在文件域的代码中就可以使用。

  • accept,用于在文件域对本地文件进行选择时对文件类型进行筛选。该属性取值为mime类型,以确定弹出的资源管理器只显示accept指定类型的文件。

同时html还规定,在项目中使用文件域,必须为文件域设置name属性。除此之外,一个表单若具备文件传递功能,必须将表单的enctype属性设置为multipart/form-data。


例如:想让用户通过文件域从本地资源管理器中选择多个图片,html代码如下所示。





123

我们还要知道,无论使用Javascript的dom操作,还是jquery的相关方法,都无法利用表单元素的value属性获得用户选择的文件地址。value属性只能得到一个包含文件全名的虚拟地址:

c:\fakepath\文件全名

我们可以从本地的c盘去进行查找,fakepath路径根本不存在。那么我们要怎样才能在页面中显示用户选择的图片呢?这就要用到files类和file类了。


二、认识files类
1、如何创建files类的实例

使用files类必须先创建files类的实例,创建格式如下所示。


var 实例名 = 文件域.files;


var files=document.queryselector(".tx").files; //变量files就是files类的实例名
alert(files); //[object filelist]

2、files类的属性


  • length,返回files类所包含的文件个数。


3、files类的方法

  • item(index),返回files类中所包含文件中索引值为index的文件。
    item()方法也可以使用files类实例名的下标来表示:files.item(0) 也可以写成 files[0]


三、认识file类
1、如何创建file类的实例

使用file类必须先创建file类的实例,创建格式如下所示。


var 实例名 = files类的实例.item(index);


var file=document.queryselector(".tx").files.item(0); //变量file就是file类的实例名
alert(file); //[object file]

2、file类的属性


  • name,返回文件的文件名。

  • size,以字节(b)为单位返回文件的大小。

  • type,返回文件的mime类型名。

  • lastmodified,返回文件上一次修改的日期距离1970年1月1日的毫秒数。

  • lastmodifieddate,返回文件上一次修改的日期。


四、认识单页面文件的有效地址
1、blob地址和base64地址

(1)这两类地址都可以在本页面内作为文件的有效地址,在其他页面无法使用。
(2)前端技术产生的这两类地址都无法在后台使用。


2、如何获得blob地址

var blobaddress = window.url.createobjecturl(file实例 | blob实例)



3、利用blob地址展示图片预览

例:页面中有一个文件域,同时还有一个用来预览图片的容器,html代码如下所示。




12

原生Javascript代码如下所示。

var filenode=document.queryselector("input[type=file]");
var imgcOntainer=document.queryselector(".imgcontainer");
filenode.Onchange=function(){
var file=this.files.item(0);
var img=new image();
img.src=url.createobjecturl(file);
img.wp-block-quote">

var fr=new filereader();



3、filereader类的方法

  • readasarraybuffer(file):读取file文件的内容,并作为arraybuffer格式得到结果。

  • readastext(file,charset):按照指定的charset字符集以文本文件的形式读取file文件的内容。

  • readasbinarystring(file):以二进制字符串的形式读取文件。

  • readasdataurl(file):读取file文件并返回file文件的base64地址。


4、filereader类的属性

  • result,在文件读取结束时返回指定方式读取文件的结果。


5、filereader类的事件

  • loadstart:开始读取文件时触发该事件。

  • progress:读取文件过程中触发该事件。

  • load:当文件读取结束时触发该事件。


例1:读取文件(图片)并得到该文件的base64地址。


$(".file").addeventlistener("input",function(){
var file=this.files.item(0);
var fr=new filereader();
fr.readasdataurl(file);
fr.Onload=function(){
$(".tp").src=this.result;
}
})

例2:为文件的读取设置一个进度条。



1

$(".file").addeventlistener("input",function(){
var file=this.files.item(0);
var fr=new filereader();
fr.readasbinarystring(file);
fr.Onloadstart=function(){ //当开始读取文件时
$(".pro").style.display="block";
}
fr.Onprogress=function(){ //读取文件过程中
var temp=(event.loaded/file.size)*100;
$("progress").value=temp;
$("progress+span").textcOntent=parseint(temp*10)/10 + "%";
}
fr.Onload=function(){ //读取结束时
window.settimeout(function(){
$(".pro").style.display="none";
},2000);
}
})

六、blob类
1、blob类的功能

实现一个新文件的创建,该类是file类的父类。


2、创建blob类的实例

var blob=new blob(array,{ type:“mime类型” })


参数:array,数组,该数组用来指定创建文件的内容。


3、blob类案例

例1:创建一个文本文件并另存为指定的本地路径。


$(".btn").addeventlistener("click",function(){
var txt=$(".txt").value;
var array=new array();
array.push(txt);
var blob=new blob(array,{
type:"text/plain"
});
var url=url.createobjecturl(blob);
var anode=document.createelement("a");
anode.href=url;
anode.download="";
anode.click();
})

例2:实现在线的html代码执行功能。


$(".btn").addeventlistener("click",function(){
var codecOntent=$(".code").textcontent;
var array=new array(codecontent.replace(/\s+\\s+/g,'\>'));
var blob=new blob(array,{
type:"text/html"
});
var fr=new filereader();
fr.readastext(blob,'gb2312');
fr.Onload=function(){
console.log(this.result);
}
var url=url.createobjecturl(blob);
$(".iframe").src=url;
})



总结

在html5的页面操作过程中,很多地方都可以用到files类、file类、bolb类。h5提供的这些类可以简化我们对文件的操作,结合后台功能,可以开发出多种多样的文件功能。


关于作者

小海前端,具有18年web项目开发和前后台培训经验,在前端领域著有较为系统的培训教材,对vue.js、微信小程序开发、uniapp、react等全栈开发领域都有较为深的造诣。入住今日头条,希望能够更多的结识web开发领域的同仁,将web开发大力的进行普及。同时也愿意与大家进行深入的技术研讨和商业合作。



推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
author-avatar
Katycui
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有