input实现多文件上传及图片预览

通过使用html的input标签可以实现文件上传比如

<input id="file" type="file" name="upload" multiple onchange="showch();">

其中将type属性设为file。

添加multiple实现多文件上传入下图所示:

通过使用原生js或jQuery就可以获得文件名,文件路径,文件大小等属性

获得文件属性的js代码如下:

<script type="text/javascript">
	function showch(){
		var files=document.getElementById(‘file‘).files,//其中document.getElementById("file").files 	会获取一个数组,数组中的元素拥有的属性有lastModifiedDate,name,size,type,webkitRelativePath。
			show=document.getElementById(‘show‘);
		for (var i = 0; i < files.length; i++) {
			show.innerHTML+=files[i].name+"<br>";

			}
		}

	}
</script>

  现在实现图片预览;

出于安全考虑浏览器一般不能直接获得文件的绝对路径;

因此就要用到FileReader用于从文件中读取数据和保存到JS变量中。此API特意设计成跟XMLHttpRequest 一样因为都是从外部读取数据。读取过程都是异步的不会造成浏览器阻塞。

主要有如下几种读取文件的方式:

  • readAsText() – 返回文件内容的纯文本格式
  • readAsBinaryString() –返回文件内容的二进制格式 (不推荐– 推荐使用 readAsArrayBuffer())
  • readAsArrayBuffer() – 返回文件内容的 ArrayBuffer 格式(图片文件推荐使用)
  • readAsDataURL() – 返回文件内容的 data URL格式

现在需要预览图片,所以使用readAsDataURL()返回文件内容的data URL格式

由于data URL包含图片的所有内容,所以可以直接赋给img 的src属性

代码如下:

1 var reader=new FileReader();
2             reader.readAsDataURL(files[i]);
3             reader.onload=function(e){
4                 var img=new Image();
5                 img.src=this.result;
6                 show.appendChild(img);

最终效果:

至此所有功能都实现

最终代码如下:

 1 <input id="file" type="file" name="upload" multiple onchange="showch();"><!--这个选中多个的方式让人觉得有点不爽啊=-= 不是很好用的样子捏-->
 2 <div id="show"></div>
 3 </form>
 4 <script type="text/javascript">
 5     function showch(){
 6         var files=document.getElementById(‘file‘).files,//其中document.getElementById("file").files     会获取一个数组,数组中的元素拥有的属性有lastModifiedDate,name,size,type,webkitRelativePath。
 7             show=document.getElementById(‘show‘);
 8         for (var i = 0; i < files.length; i++) {
 9             show.innerHTML+=files[i].name+"<br>";
10             var reader=new FileReader();
11             reader.readAsDataURL(files[i]);
12             reader.onload=function(e){
13                 var img=new Image();
14                 img.src=this.result;
15                 show.appendChild(img);
16                 console.log(this.result);
17             }
18         }
19
20     }
21 </script>
时间: 2024-10-27 10:53:17

input实现多文件上传及图片预览的相关文章

文件上传之图片预览

一.业界现状分析 有时候我们需要在上传图片之前为用户提供图片预览的功能,HTML5规范出来之前,由于缺少原生的File API支持,我们需要借助Flash或者浏览器插件来满足这种需求.有了HTML5,我们可使用URL或者FileReader对象实现预览功能. 二.应用场景 图片分享类的应用,如Flickr,Facebook.相册应用,如:QQ相册. 虽然139邮箱没有合适的应用场景,但是可将技术预研的成果作为技术储备,好东西总有用得着的时候. 三.编码实现 方式一:window.URL (1).

dwz+jquery+fileupload+springmvc实现文件上传 及图片预览

1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarDiskFileItemFactory fac = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(fac);upload.setHeaderEncoding("utf-8"); Html代

2016/4/19 ①单个文件上传 ②上传图片后 预览图片

1,f1.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <!-- 作业:在网上找上传图片预览的代码 上传服务器 再预览--> <form action="f1chuli.php&q

input 文件上传实现本地预览

上传图片 本地预览 获取图片大小 上传视频 本地预览 获取视频 duration 视频大小 图片上传 主要涉及内容 input accept filesList URL.createObjectURL() URL.revokeObjectURL() input file <label for='upload'></label> // ::before :: after 用于扩展可点击区域 <input type="file" id="upload

文件上传(无预览模式版)

文件上传是网页的基本功能之一,这一章我们将讲解无预览模式版本 第一:网页表单显示 <body> <h1>文件上传</h1> <form action="chuli.php" method="post" enctype="multipart/form-data"> <input type="file" name="file"/> <input

文件上传(带有预览模式)

这里所讲的预览是将文件上传至后台之后,代码调用服务器端文件,在网页中显示出来 第一:网页显示部分 和  显示区域css样式表 <body> <h1>文件上传</h1> <form action="chuli.php" method="post" enctype="multipart/form-data" id="sc" target="hidden_frame"&g

php文件上传及头像预览

php文件上传原理是通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php 程序将文件保存在体统中. html代码: 1 <form action="shangchuan.php" method="post" enctype="multipart/form-data"> 2 <input type="file&q

用openoffice+jodconverter+webuploader+pdf.js实现文件上传、在线预览功能

一.背景 最近公司一个项目要实现一个文件上传以及多文档在线预览的功能,之前一直做无线工具开发的,没有涉及到这些东西.另外项目组缺java开发人员,而且自己也只是一个半吊子前端加小半吊子java开发人员,所以让我一个人先弄个Demo出来瞧瞧.在网上搜索了不少资料,在这里只是整理一下,留作以后查阅. 二.插件以及工具包 1.pdfjs-v1.7.225  前端pdf格式文件的显示组件 2.webuploader-0.1.5  百度的文件上传组件 3.video-js-6.2.5 html5视频播放组

WebForm实现文件上传,并预览

实现效果: 页面代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&quo