2011-05-10 75 views
2

輸入類型文件或文件上傳html控件/ asp.net控件值似乎會根據瀏覽器而改變。跨瀏覽器在asp.net 2.0中的文件輸入驗證

<input type="file" id="fileUpload" name="fileUpload" /> 

鉻: fileUpload.value給C:\ fakePath \文件名

火狐: fileUpload.value給FILENAME.EXT

即: fileUpload.value給出完整路徑+文件名

我使用了一個帶有驗證表達式的正則表達式驗證程序,如下所示

^[a-za-zA-Z0-9_\.]{3,28}\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$ 

執行以下過程:

  1. 文件名必須是3至28個字符

2.延長該組必須只匹配。

由於fileUpload控件的值在不同的瀏覽器中有所不同,我現在如何驗證它?

回答

0

@Fraz Sundal無法與代碼,因此新的崗位 @Fraz仍然不知道爲什麼在這裏失效註釋是代碼片段<asp:RegularExpressionValidator id="rgvFile" runat="server" font-bold="true" errormessage="Only pdf,doc,zip,jpeg,png,gif files allowed" cssclass="rgvfile" enableclientscript="true" display="Dynamic" controltovalidate="fileUpload" validationexpression="^[a-za-zA-Z0-9_\.]{3,28}\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$" text="Only pdf, doc, zip, jpeg, png, gif files allowed" tooltip="Only certain files allowed and filename cannot contain space.Please check and retry"></asp:RegularExpressionValidator>

客戶端驗證表達式變成^[a-za-zA-Z0-9_\.]{3,28}\\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$可能是因爲那個

0

如果您只使用標準RegularExpressionValidator,那麼它將跨瀏覽器本身工作。由於RegularExpressionValidator在您選擇文件時也工作在客戶端,因此如果文件無效,它會自動顯示ErrorMessage。

示例代碼

<asp:FileUpload ID="fup" runat="server" />   
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
ControlToValidate="fup" ErrorMessage="Invalid File" 
ValidationExpression="^[a-za-zA-Z0-9_\.]{3,28}\.(pdf|txt|doc|docx|png|gif|jpeg|jpg|zip|rar)$"></asp:RegularExpressionValidator> 
+0

是這樣!你可以用一個簡單的表單來測試Chrome,Safari,firefox中有問題的正則表達式和視圖。主要原因問題因爲無效而被提出 – Deeptechtons 2011-05-10 07:50:58

+0

此代碼適用於IE,Firefox和Chrome。我認爲它足以在三個主要瀏覽器上檢查跨瀏覽器 – 2011-05-10 08:18:42

+0

我會在進行一些更多的測試後回來 – Deeptechtons 2011-05-10 08:22:47