前端-input[type=file]只能上传一次文件

941 阅读1分钟
  • 问题:使用input[type=file]上传文件,文件被使用一次或者清除一次后,无法再次上传文件

  • 原因:每一次文件被使用后,原来的input会被替换成一个新的input标签,并且是浅克隆,所以新input标签上没有原来绑定的onchange事件

  • 解决方案:每一次调用成功之后,替换input file,然后重新绑定change事件

  • 代码:

// 清空上传的文件
    $("#clearFileUpload").click(() => {
        $("#uploadFileInput").val('');
        // 替换标签
        $("#uploadFile").replaceWith('<input type="file" accept=".zip, .rar" class="upload_file" id="uploadFile" />');
        // 重新绑定change事件
        $("#uploadFile").on("change", () => {
            let file = $("#uploadFile")[0].files[0];
            $("#updateFileInput").val(file.name);
        })
    });