在上传之前查看客户端从文件系统中选择的图像?

Fau*_*ust 14 html javascript forms jquery

我在表单上有一个输入标签,用于选择要上传的图像.

<div id="lowresDemo">
    <img src="some-url" />
</div>
<input type="file" id="FileToUpload" name="FileToUpload" />
Run Code Online (Sandbox Code Playgroud)

我试图更改输入旁边的表单上显示的缩略图,以向用户确认他们的选择是使用以下jquery代码进行的:

$('#FileToUpload').change(function () {
    $('#lowresDemo img').attr('src', $(this).val());
});
Run Code Online (Sandbox Code Playgroud)

...这在任何浏览器中都不起作用,出于浏览器安全原因,我认为(我记得上次我做过像年前这样的事情).

问题:
有没有办法在提交表单之前显示用户的图像选择 - 而不仅仅是输入字段中值的文件路径+名称,而是显示他们选择的文件的缩略图?

或现代浏览器安全防止这种情况?

Pee*_*ter 41

使用File API(IE不支持File API)是可能的

<input type="file">
<script type="text/javascript">
    $(document).ready(function() {
    $("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);
    }
});
    });
</script>
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/ugPDx/