如何解决同一文件二次上传无效问题

项目中最近遇到的一个问题,场景是:

文件第一次上传后,修改文件内容后,不刷新页面,再次上传该文件,就出现如下图所示的错误。(刷新页面可以正常上传,换成另一个文件也可正常上传)

【现象】

net::ERR_UPLOAD_FILE_CHANGED 

【问题原因】

前后两次的文件名并没有发生改变,没有触发input的onchange的事件。

【解决方案】

在接口回调里将input的value置空即可。

// 假如input的ID是file
document.getElementById('file').value = '';

 当然,如果有其他方法,也可在评论区留言哦!

=====================分界线=========================

问题场景:

        两个Input输入框,一个type=text(value取值fileName),一个type=file(id=file,给另一个输入框赋值)

。。。我又回来了,上述方法对于我现在的业务场景会产生一个新的问题,连续发两次请求,第二次请求的文件名称拿不到(因为第一次请求之后会把file的value清空,导致第二次请求时file拿不到value)。

思来想去,暂时没有什么好的方案,目前的解决方案时把file存起来,即:

const file = document.getElementById('file').files[0]

然后发请求的时候判断:

  • 条件1:fileName是否有值
  • 条件2:document.getElementById('file').value为空(包括空字符串)

如果两个条件都满足,表明是手动清空的file的value,并且上传的文件没有发生更改,这个时候file直接取上一次保存的值,否则,就取最新的。

如果有什么别的解决方案,希望大家可以留言补充,非常感谢!!!

猜你喜欢

转载自blog.csdn.net/weixin_38629529/article/details/127128972
今日推荐