2011-04-27 112 views
31

我正在构建一个基本的社交网络,并在注册中用户上传了一个显示图像。 基本上我想显示图像,就像在表单的同一页面上预览一样,然后在表单提交之后选择它。HTML输入类型=文件,在提交表单之前获取图像

这可能吗?

+0

的可能重复的[如何上传前通过JavaScript上传预览图像](http://stackoverflow.com/questions/4094012/how-to-upload-preview-image-before-upload-through-javascript) – 2011-04-27 14:42:16

回答

4

无法显示图像,直到它从任何服务器提供服务。因此您需要将图像上传到服务器以显示其预览。

+0

谢谢,简单但正是我需要:) – Tom 2011-04-27 10:30:47

+0

很好的解释 – 2015-09-26 10:20:52

+0

这是一个错误的答案......虽然它出现在顶级的结果...看到讨论中的其他链接或http://stackoverflow.com/questions/14069421/ show-an-image-preview-before-upload – 2017-04-04 15:51:20

46

下面是在上传之前预览图像的完整示例。

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> 
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script> 
<meta charset=utf-8 /> 
<title>JS Bin</title> 
<!--[if IE]> 
<script src="http://goo.gl/r57ze"></script> 
<![endif]--> 
</head> 
<body> 
<input type='file' onchange="readURL(this);" /> 
<img id="blah" src="#" alt="your image" /> 
</body> 
</html> 

的JavaScript:

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]); 
    } 
} 
+4

为什么混淆网址? – goat 2012-12-28 02:55:12

+0

它不会呈现网址,但它直接显示来自本地存储的图像使用嵌入图像在文本中...只是尝试此代码,然后通信 – 2012-12-28 11:21:06

+1

你误解。问题是你为什么使用url shortener(goo.gl)?它隐藏/混淆网址 – goat 2012-12-28 15:48:47

10

我发现这simpler yet powerful tutorial它使用fileReader对象。它只是简单地创建一个img元素,并使用的FileReader对象,它的源属性分配为形式的输入值

function previewFile() { 
 
    var preview = document.querySelector('img'); 
 
    var file = document.querySelector('input[type=file]').files[0]; 
 
    var reader = new FileReader(); 
 

 
    reader.onloadend = function() { 
 
    preview.src = reader.result; 
 
    } 
 

 
    if (file) { 
 
    reader.readAsDataURL(file); 
 
    } else { 
 
    preview.src = ""; 
 
    } 
 
}
<input type="file" onchange="previewFile()"><br> 
 
<img src="" height="200" alt="Image preview...">

0

function previewFile() { 
 
    var preview = document.querySelector('img'); 
 
    var file = document.querySelector('input[type=file]').files[0]; 
 
    var reader = new FileReader(); 
 

 
    reader.onloadend = function() { 
 
    preview.src = reader.result; 
 
    } 
 

 
    if (file) { 
 
    reader.readAsDataURL(file); 
 
    } else { 
 
    preview.src = ""; 
 
    } 
 
}
<input type="file" onchange="previewFile()"><br> 
 
<img src="" height="200" alt="Image preview...">

+0

你可以添加一些解释?谢谢 – Allan 2017-12-07 06:46:07