猿问

只能将“”作为值分配给输入类型文件

我有以下代码来检查我的文件是否为 .jpg、.jpeg 或 .png:


<!DOCTYPE html>

<html>

<body>

<input type="file" align="center" accept=".jpg,.jpeg,.png" onchange="this.size = Math.max(this.value.length, 7)+15;read(this)" id="myinput" style="min-width: 50px;" 

      />


</body>

</html>


<script>


var myfile=""

async function read(input) {

  var file = input.files[0];

  var idxDot = file.name.lastIndexOf(".") + 1;

  var extFile = file.name.substr(idxDot, file.name.length).toLowerCase();

  if (extFile=="jpg" || extFile=="jpeg" || extFile=="png"){

      //fileContent = await readFile(file);

      myfile=file

      alert("Valid file selected!");

  }else{

      alert("Only jpg, jpeg or png allowed");

      input.value = myfile;

  }

}

</script>

我正在尝试,如果选择了与该文件不同的文件,则显示所采用的有效文件的最后一个值。


但这只会在开始时、在获取有效文件之后发生。如果我选择另一个文件,输入中显示的路径将更改为所选文件的路径,即使它不是有效的路径。


有没有办法解决这个问题,使显示的路径始终是最后一个有效文件的路径?


千万里不及你
浏览 92回答 1
1回答

慕无忌1623718

有点破解,但可能会给你你需要的东西var myfile={name:"none"};&nbsp;function read(input) {&nbsp; var file = input.files[0];&nbsp; var idxDot = file.name.lastIndexOf(".") + 1;&nbsp; var extFile = file.name.substr(idxDot, file.name.length).toLowerCase();&nbsp; var span =document.getElementById('last');&nbsp; if (extFile=="jpg" || extFile=="jpeg" || extFile=="png"){&nbsp; &nbsp; &nbsp; //fileContent = await readFile(file);&nbsp; &nbsp; &nbsp; myfile=file&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; alert("Valid file selected!");&nbsp; &nbsp; &nbsp; &nbsp;span.style.display='none';&nbsp; }else{&nbsp; &nbsp; &nbsp; alert("Only jpg, jpeg or png allowed");&nbsp; &nbsp; &nbsp; input.value = '';&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; span.style.display='inline';&nbsp; &nbsp; &nbsp; span.innerHTML = "Last valid File was: " + myfile.name&nbsp; }}span{display:none;}<!DOCTYPE html><html><body><input type="file" align="center" accept=".jpg,.jpeg,.png" onchange="this.size = Math.max(this.value.length, 7)+15;read(this)" id="myinput" style="min-width: 50px;"&nbsp;&nbsp; &nbsp; &nbsp; />&nbsp; &nbsp; &nbsp; <span id='last'></span></body></html>
随时随地看视频慕课网APP

相关分类

Html5
我要回答