我想做一個localhost文件上傳程序,以便我可以將文件從手機上傳到我的桌面,但我遇到了HTML5文件輸入控制問題。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上傳腳本錯誤,因爲它無法找出上傳的文件有什麼擴展名。
有人可以請解釋這種行爲,以及如何使其行爲更連貫?
你不應該通過查看擴展來測試文件類型。擴展名可以說:'ren nastyvirus.exe cutekittens.jpg'。 「哦,看,這是一張jpg圖片!」。 $ _FILES包含MIME類型信息,您應該使用MIME查找工具(如finfo)檢查實際上傳的文件。 –
'alert(hFileInput.files [0] .name);'而不是值,這是不可靠的。 – dandavis
@MarcB你是對的,但僅僅知道MIME類型是不足以找出文件被髮送的擴展名。一個jpeg可能是.jpg或.jpeg,這是微不足道的,但仍然很高興有這種信息。 – Dmitry