我想知道是否有办法动态显示用户刚刚上传到input type =“file”字段的图像。
例如,到目前为止,我有以下代码:
image_upload.html
<form id ="image_upload_form" action="" method="post" enctype="multipart/form-data">
<input id ="id_iamge" type="file" name="image" />
<input type="submit" value="Upload" />
</form>
<div id="image_view">
<img id="uploaded_image">
</div>
的 upload.js
$(document).ready(function() {
$("#id_image").change(file_select);
});
function file_select(event) {
$("#uploaded_image").attr("src", $("#id_image").val());
}
所以我基本上想要显示用户刚刚在Field上传的图像。
当然,我知道如果用户已经提交了表单,并且图片已经在我的数据库服务器中,我可以轻松查看该图像。
但是,我想在将图像提交到数据库服务器之前预览图像。
为了做到这一点,我想我必须在Uploader自己的计算机中找出Image的PATH,然后将“Local path”设置为图像的“src”。
有没有办法获取用户刚提交的图像的本地路径?
(上面的我的Javascript代码显然不起作用,因为它只是设置图像文件的名称,而不是绝对路径,作为“src”。例如,当我运行该代码并上传图像时,我得到这个:
结果:
<img id="uploaded_image" src="random_image.jpg" />
没有显示任何内容。
答案 0 :(得分:23)
看看这个示例,这应该有效:http://jsfiddle.net/LvsYc/
HTML:
<form id="form1" runat="server">
<input type='file' id="imgInp" />
<img id="blah" src="#" alt="your image" />
</form>
JS:
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#blah').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#imgInp").change(function(){
readURL(this);
});
答案 1 :(得分:5)
使用此代码。它会起作用:
<!-- Java script code, use jquery library. -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script type="text/javascript">
function showimagepreview(input)
{
if (input.files && input.files[0])
{
var filerdr = new FileReader();
filerdr.onload = function(e) {
$('#imgDisplayarea').attr('src', e.target.result);
};
filerdr.readAsDataURL(input.files[0]);
}
}
</script>
<!-- HTML -->
<form>
<div>
<input type="file" name="imgShow" id="imgShow" onchange="imagePreview(this)" />
</div>
<img id="imgDisplayarea"/>
</form>