2011-12-20 83 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