上传图片显示在页面是如何实现的?

clipboard.png
就像图片那样,上传图片后小图先显示在页面,这是通过ajax实现的吗,我现在还没学后端语言,自己一个人做,有什么办法实现吗?还是说这是后台负责的?

阅读 5.9k
4 个回答

不用ajax返回小图的url,直接用js就可以实现,下面是实现代码:

先看效果

clipboard.png

HTML

<input type="file" id="imgInp">
<image id="blah" style="width:100px; height:100px;"/>

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);
});
<input type="file" onchange="previewFile()">
<img src="" height="200" alt="Image preview...">
function previewFile(e) {
    var preview = document.querySelector('img');
    var file = e.target.files[0];
    var reader = new FileReader();
    reader.onload = function () {
        preview.src = reader.result;
    }
    if (file) {
        reader.readAsDataURL(file);
    } else {
        preview.src = "";
    }
}

通过html5的FileReaderapi进行本地文件的获取,以base64的方式,并写入到img.src进行显示。

URL.createObjectURL预览

<input type="file"  onchange="change(event)">
<img src="" id="myimg"> 
function change(ev){       
    var event = window.event || ev;
    var files = event.target.files[0];
    var myimg = document.getElementById("myimg");
    myimg.src = URL.createObjectURL(files);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题