如何动态显示文件上传中的图像

时间:2014-10-10 05:55:46

标签: javascript

我创建了一个文件上传功能。我得到了文件名和文件类型,并且不知道如何使用动态控件显示图像!

function AddFileUpload() {

    var div = document.createElement('DIV');

    div.innerHTML = '<input id="file' + counter + '" name = "file' + counter +

                    '" type="file"/>' +

                    '<input id="Button' + counter + '" type="button" ' +

                    'value="Remove" onclick = "RemoveFileUpload(this)" />';

    document.getElementById("FileUploadContainer").appendChild(div);

    counter++;

}

function RemoveFileUpload(div) {

    document.getElementById("FileUploadContainer").removeChild(div.parentNode);

}

1 个答案:

答案 0 :(得分:0)

以下是我所拥有的有趣项目中的一些代码。

<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}

window.addEventListener('load', onDocLoaded, false);

function onDocLoaded()
{
    byId('mFileInput').addEventListener('change', onFileChosen, false);
}

// fileVar is an object as returned by <input type='file'>
// imgElem is an <img> element - can be on/off screen (doesn't need to be added to the DOM)
function loadImgFromFile(fileVar, imgElem)
{
    var fileReader = new FileReader();
    fileReader.onload = onFileLoaded;
    fileReader.readAsBinaryString(fileVar);
    function onFileLoaded(fileLoadedEvent)
    {
        var result,data;
        data = fileLoadedEvent.target.result;
        result = "data:";
        result += fileVar.type;
        result += ";base64,";
        result += btoa(data);
        imgElem.src = result;
        imgElem.origType = fileVar.type;    // unnecessary for loading the image, used by a current project.
    }
}

function onFileChosen(evt)
{
    if (this.files.length != 0)
    {
        var tgtImg = byId('tgt');
        var curFile = this.files[0];
        loadImgFromFile(curFile, tgtImg);
    }
}

</script>
<style>
</style>
</head>
<body>
    <input id='mFileInput' type='file'/><br>
    <img id='tgt' />
</body>
</html>