1. 程式人生 > >JS實現圖片上傳多次上傳同一張不生效的處理方法

JS實現圖片上傳多次上傳同一張不生效的處理方法

平時都是用input直接上傳圖片,應該都用的是change事件,但是如果選擇了一張圖片,然後第二次再次選擇,就會出現不生效的bug,這裡給大家說一下解決辦法,希望對大家有幫助。

html程式碼:

<b>上傳附件:</b>
<div class="file">
        <img src="/Public/Admin/img/add-button.jpg" class="add_file" onclick="upload()">
        <input type="file" id="upload_file" style="display:none;"  multiple>
</div>

js程式碼:

function upload(){
    $("#upload_file").click();
}
$("body").on("change",'#upload_file',function(){
    var inputFile = document.getElementById('upload_file');
    var file_length=inputFile.files.length;
    for(var i=0;i<file_length;i++){
        var oFReader = new FileReader();
        oFReader.readAsDataURL(inputFile.files[i]);
        oFReader.onloadend = function(oFRevent){
            var src = oFRevent.target.result;
            $("#upload_file").attr('type','text');
            $("#upload_file").after('<i class="imagelast" style="width:120px;height:100px;text-align:center;display:inline-block;margin-top:10px;"><img src="'+src+'" name="upload_files" class="upload_files style="width:100px;"/><div class="imageX1"></div></i>');
            $(".imageX1").css({"width":'27px','height':'28px','margin-top':'-107px','margin-left':'89px','background-image':'url('+'/Public/Admin/img/cancel.png)','position':'absolute'});
            $("#upload_file").attr('type','file');
        }
    }
})

如上,主要的程式碼就是把type=‘file’的這個file變成text,然後圖片顯示之後再變成file型別,這樣就解決了change的弊端