2011-11-05 35 views
0

我只是想驗證正在上傳的圖像的文件名,以確保它沒有空格或不常見的字符。Javascript在上傳之前驗證文件名

這是我四處尋找的最新嘗試,仍然沒有運氣。這可能與文件的路徑有關嗎?是考慮到這個還是隻考慮了文件名?

我有這個和php的擴展工作服務器端的檢查,但我想在提交之前提示用戶。

在這個時候,我即使彈出警告,即使我使用的文件名應該接受,或者應該拒絕。

的JavaScript

function validate(elem){ 
    var alphaExp = /^[a-zA-Z_-]+$/; 
    if(elem.value.match(alphaExp)){ 
     return true; 
    }else{ 
     alert("File name not suitable"); 
     elem.focus(); 
     return false; 
    } 
} 

HTML

<label for="file">Filename:</label> 
<input type="file" name="filename" id="filename" onchange="validate(this)" /> 
<p><input type="submit" name="submit" class="submit" value="Submit" /> 
</form> 

回答

2

您將需要使用這個複雜得多的正則表達式,因爲elem.value要檢查不會像image123.jpg但更多的東西像C:\fakepath\randomfolder\some other folder\image123.jpg

你可能想要檢查:http://www.codeproject.com/Tips/216238/Regular-Expression-to-validate-file-path-and-exten

,你會發現這個頁面上的爲例主要是文檔,而不是圖像,但你可以扭轉這一點,以適應這樣你的需求:

^(?:[\w]\:|\\)(\\[a-z_\-\s0-9\.]+)+\.(png|gif|jpg|jpeg)$ 
+0

非常感謝。所以從這看起來好像我的問題歸結於文件的路徑也在那裏。我會玩這個。再次感謝 – pete

+0

這沒有任何意義;你會驗證完整的字符串是什麼?您需要像elem.value.split(「\\」)。pop()。match(/^[a-zA-Z _-] + \。(png | gif | jpg | jpeg)$ /) –

+0

我得到你說的是什麼,但是如果文件名中有一個「\\」,你的解決方案將不起作用。 – Leo

0

你可以使用這個功能太.. ..

<script type="text/javascript"> 
function getNameFromPath(strFilepath) { 
    var objRE = new RegExp(/([^\/\\]+)$/); 
    var strName = objRE.exec(strFilepath); 

    if (strName == null) { 
     return null; 
    } 
    else { 
     return strName[0]; 
    } 
} 
</script> 

<script language="javascript"> 
function Checkfiles() { 
    var fup = document.getElementById('filename'); 
    var fileName = fup.value; 
    var ext = fileName.substring(fileName.lastIndexOf('.') + 1); 
    if(ext == "gif" || ext == "GIF" || ext == "JPEG" || ext == "jpeg" || ext == "jpg" || ext == "JPG" || ext == "doc") { 
     return true; 
    } else { 
     alert("Upload Gif or Jpg images only"); 
     fup.focus(); 
     return false; 
    } 
} 
</script> 
0

它是非常非常簡單,test功能

function validate(form){ 
 
    if (/\s/.test(form.elements.file.value)) { 
 
    alert(' filename contains spaces. Please rename the file.'); 
 
    return false; 
 
    } 
 
    return true; 
 
}
<html> 
 
<body> 
 
<form onsubmit="return validate(this);"> 
 
    <input type="file" name="file" value="" > 
 
    <input type="Submit" value="Submit" > 
 
</form> 
 
</body> 
 
</html>
來源 https://codehurdles.blogspot.in/2017/11/javascript-validate-filename-before.html