2011-12-20 149 views
2

我正在使用輸入控件和一種文件類型來允許用戶上傳圖像。當我處理上傳時,我使用WebImage.GetImageFromRequest()來獲取提交的圖像。這非常有效,除非用戶的圖像文件名稱的擴展名不是小寫。所以,myimage.jpg的作品,但myimage.JPG不會。這是一個documented的問題,沒有解決方案。使用jQuery更改輸入控件值

我想通過重命名在jQuery中輸入的值來解決這個問題,但我無法讓它工作。我有一個函數檢查有效的擴展名,我認爲我可以在這裏添加代碼將值轉換爲全部小寫,但val()方法似乎沒有按預期設置值。

 $("#uploadimagebutton").click(function (e) { 
      var fileName = $('input[name="fileUpload"]').val(); 

      var validFileTypes = ['gif', 'jpg', 'png', 'jpeg', 'bmp']; 
      if (!fileName) { 
       e.preventDefault(); 
       return; 
      } 
      fileName = fileName.toLowerCase(); 


      alert(fileName); //This displays my file name and path in all lowercase 

      $('input[name="fileUpload"]').val(fileName); //This is FAILING 


      alert($('input[name="fileUpload"]').val()); //Shows path unchanged (not lower) 

      var dots = fileName.split(".") 
      //get the part AFTER the LAST period. 
      fileType = "." + dots[dots.length - 1]; 

      if (("." + validFileTypes.join(".")).indexOf(fileType) == -1) { 
       e.preventDefault(); 
       alert("File Type: " + fileType + " is not allowed. \n Please only upload files that end in types: \n\n." + (validFileTypes.join(" .")) + "\n\nPlease select a new file and try again."); 
      } 
      return; 
     }); 

您可以在上面看到兩條警報。所以,我的路徑可能是這樣的,

C:\Users\jreddy\Pictures\myimage.JPG 

我的第一個警報應該顯示上述字符串的降低版本,它的確如此。

 c:\users\jreddy\pictures\myimage.jpg 

然後使用val方法設置此值,但是當我這樣做時,我的下一個語句顯示了我的原始字符串。

我不確定我的jQuery是否有問題,或者輸入控件不喜歡被改變。

回答

1

我的理解是文件控制是隻讀的。所以你可以將它留空或讀取值,但不能改變它(儘管看起來可以)。

我看到具體的參考IE不允許這個,當我搜索谷歌。

+0

是的,我發現是這樣。這是一項安全功能。如果WebImage.GetImageFromRequest()爲null,我修改了代碼以從Request.Files獲取圖像。謝謝@Ryley – 2011-12-20 18:54:42