我正在尝试制作本地主机文件上传程序,以便我可以将文件从手机上传到桌面,但是HTML5文件输入控件出现问题。
以下是演示该问题的代码:
<!DOCTYPE html>
<html>
<head>
<title>File Input Problem Demo</title>
<script>
let hFileInput = null;
function performSetup() {
hFileInput = document.getElementById('fileInput');
}
function showFilename() {
alert(hFileInput.value);
}
</script>
</head>
<body onload="performSetup()">
<input id="fileInput" type="file"></input>
<br />
<button onclick="showFilename()">show filename</button>
</body>
</html>
在我的手机上,当我将文件输入到文件输入中并单击按钮时,它会显示不带扩展名的文件名,而在我的主/主机/主机上,当我按下按钮时,它会显示完整的文件名,包括扩展名。
这反过来又使我的 php 上传脚本出错,因为它无法找出上传的文件具有的扩展名。
有人可以解释一下这种行为以及我如何使其行为更一致吗?
某些文件选择器在选择文件时会省略文件扩展名。这意味着文件选择器不会向文件输入元素提供文件扩展名信息,这反过来意味着上传文件时没有扩展名。
处理这种情况的最简单方法是创建一个警告,当用户选择没有扩展名信息的文件时,该警告会显示,让他们知道他们的文件选择器可能省略了扩展名,以便他们使用另一个文件选择器(手机/平板电脑通常允许您选择要选择文件的应用程序, 而Windows通常只有一个标准的选择对话框)。
此问题可通过让用户使用不省略扩展名的文件选择器来解决(音乐选择器通常省略扩展名,视频选择器和照片选择器也是如此,而通用文件选择器倾向于保留扩展名)。