2017-07-19 26 views
-1

我有一個要求,我在某些條件下驗證,如果tabtypePanaromic那麼只有這個文件名可以上傳。允許上傳文件的任何名稱,如果類型是根據條件

但對於我的第三個tabtype這是SitePlot我要的是,用戶可以上傳文件有任何名稱

這裏是我試過..

var Tabtype = document.getElementById('hdnType').value; 

    if (Tabtype == "Panaromic") { 
     var validFileName = { 
      "120.jpg": 1, "150.jpg": 1, "180.jpg": 1, "210.jpg": 1, "240.jpg": 1, 
     } 
    } 

    if (Tabtype == "Satellite") { 
     var validFileName = { 
      "55.jpg": 1, "74.jpg": 1, "83.jpg": 1, "935.jpg": 1, 
     } 
    } 

    if (Tabtype == "SitePlot") { 
     var validFileName = { 
      "":1, 
     } 
    } 

但是當我上傳對於Siteplot,我在此行發生錯誤

var fileName = path.split(/(\\|\/)/g).pop(); 
      if (!validFileName[fileName]) { 
       jAlert("Invalid file name" + filename); 
      } 

完整的js代碼。這裏是Fiddle

+0

需要downvote的理由..請 – BNN

+1

我沒有downvote,但我在這裏看不到任何問題。如果「爲什麼我會得到錯誤?」,那麼我們需要這個錯誤。關於您的JSFiddle:它不起作用,它應該是一個最小的可重現示例。如果它只是一個無法運行和/或調試的代碼,那麼在小提琴中沒有任何意義。 –

+0

@YeldarKurmangaliyev:請告訴我你不明白,以便我可以解釋 – BNN

回答

1

您可以在if條件設置validFileNametrue和使用,&&檢查validFileNameBoolean

if (Tabtype == "SitePlot") { 
    validFileName = true; 
} 

var fileName = path.split(/(\\|\/)/g).pop(); 

if (typeof validFileName !== "boolean" && !validFileName[fileName]) { 
    jAlert("Invalid file name" + filename); 
} 
+0

什麼是意外?請注意,'validFileName'應該可能是一個全局變量 – guest271314

+0

這是我的錯誤。我把它換了 – BNN

0

你可以改變你的邏輯,使其不再依賴文件名相等:

function isValidFilename(filename) 
{ 
    switch (document.getElementById('hdnType').value) 
    { 
     case "Panaromic": 
      var validNames = ["120.jpg", "150.jpg", "180.jpg", "210.jpg", "240.jpg"]; 
      return validNames.indexOf(filename) > -1; 

     case "Satellite": 
      var validNames = ["55.jpg", "74.jpg", "83.jpg", "935.jpg", "240.jpg"]; 
      return validNames.indexOf(filename) > -1; 

     case "SitePlot" 
      return true; 

     case "OtherExamples": 
      return /^\d{1,}\.jpg$/.match(filename); // regular expression 
      return filename.Length > 3; // length 
      return filename.substring(filename.Length - 4) === ".jpg"; // anything else 

     default: 
      throw new Error("Wrong Tabtype"); 
    } 
} 

var fileName = path.split(/(\\|\/)/g).pop(); 
if (!isValidFilename(fileName)) { 
    jAlert("Invalid file name" + filename); 
} 

現在,「Panaromic」和「Satellite」tabtypes需要文件名以匹配其允許的值列表,但「SitePlot」tabtype允許任何文件名。

這樣,你的邏輯可以包含任何內容:檢查精確值,長度,文件擴展名,正則表達式等

請記住,用戶總是可以繞過這個檢查,上傳文件與任何文件名你的服務器。如果文件名對於您的系統很重要,那麼您需要在服務器端進行驗證。

相關問題