预览图像而不上传到我的服务器

时间:2011-01-12 19:18:37

标签: javascript asp.net

您好我如何预览图像而不上传到asp.net C#中的服务器,当我看到图像时,我应该按上传上传到服务器。

2 个答案:

答案 0 :(得分:13)

在支持HTML5的浏览器中,您可以使用FileReader对象从用户hdd读取文件作为base64编码的字符串。 您可以将此base64表示与css一起使用来显示预览。 在旧版浏览器中,您需要使用flash或类似的基于插件的代码来执行此操作。

这是一个适用于所有现代浏览器的HTML5示例:

<html>
<head>
<script>

var elmFileUpload = document.getElementById('file-upload');

function onFileUploadChange(e) {
    var file = e.target.files[0];
    var fr = new FileReader();
    fr.onload = onFileReaderLoad;
    fr.readAsDataURL(file);
}

function onFileReaderLoad(e) {
    var bgStyle = "url('" +e.target.result + "')";

    elmFileUpload.parentElement.style.background = bgStyle;

};

elmFileUpload.addEventListener('change',onFileUploadChange,false);
</script>
</head>
<body>
<input type="file" id="file-upload"/>
</body>
</html>

See a fiddle of it in action here

答案 1 :(得分:3)

是的,这是可能的。

HTML

<input type="file" accept="image/*"  onchange="showMyImage(this)" />
 <br/>
<img id="thumbnil" style="width:20%; margin-top:10px;"  src="" alt="image"/>

JS

 function showMyImage(fileInput) {
        var files = fileInput.files;
        for (var i = 0; i < files.length; i++) {           
            var file = files[i];
            var imageType = /image.*/;     
            if (!file.type.match(imageType)) {
                continue;
            }           
            var img=document.getElementById("thumbnil");            
            img.file = file;    
            var reader = new FileReader();
            reader.onload = (function(aImg) { 
                return function(e) { 
                    aImg.src = e.target.result; 
                }; 
            })(img);
            reader.readAsDataURL(file);
        }    
    }

您可以从此处获取Live Demo