HTML - Display image after selecting filename
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Preview an image before it is uploaded
我有一个允许我的表格
1 | <input type="file" name="filename" accept="image/gif, image/jpeg, image/png"> |
浏览并选择一个文件。
我想要做的是在选择图像后立即显示该图像。
这是在表单上的"提交"按钮被按下之前,因此图像几乎肯定存在于客户端。 可以这样做吗?
干得好:
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!DOCTYPE html> <html> <head> <link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> <script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"> <meta charset=utf-8 /> JS Bin <!--[if IE]> <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"> <![endif]--> <style> article, aside, figure, footer, header, hgroup, menu, nav, section { display: block; } </style> </head> <body> <input type='file' onchange="readURL(this);" /> <img id="blah" src="#" alt="your image" /> </body> </html> |
脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function readURL(input) { if (input.files && input.files[0]) { var reader = new FileReader(); reader.onload = function (e) { $('#blah') .attr('src', e.target.result) .width(150) .height(200); }; reader.readAsDataURL(input.files[0]); } } |
现场演示
您可以使用以下代码实现此目的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $("input").change(function(e) { for (var i = 0; i < e.originalEvent.srcElement.files.length; i++) { var file = e.originalEvent.srcElement.files[i]; var img = document.createElement("img"); var reader = new FileReader(); reader.onloadend = function() { img.src = reader.result; } reader.readAsDataURL(file); $("input").after(img); } }); |
演示:
http://jsfiddle.net/ugPDx/
这可以使用HTML5完成,但只能在支持它的浏览器中使用。 这是一个例子。
请记住,对于不支持此功能的浏览器,您需要一种替代方法。 我在这个插件上取得了很大的成功,这需要你手中的很多工作。