2014-04-18 21 views
0

我的情況是:我有兩個IIS站點:A(文件上傳,使用ASP.NET MVC),B(普通網站,使用ASP.NET)。 B調用A(在iframe中,傳遞一些參數到URL中,包括acceptFileType到A)來過濾文件上傳。我可以將正則表達式模式傳遞給url以發送給服務器進行處理嗎?

在B:我通過http://www.urlofA.com/Home/Upload?acceptFileTypes= 「圖像/ *,應用/ PDF」

上的: 在控制器:

public ActionResult Upload(string path, string acceptFileTypes = "*/*", bool dialog = true) 
{    
    ViewBag.AcceptFileTypes = acceptFileTypes;    
    return View(); 
} 

在Upload.chtml:

<input type="file" [email protected]"/> 

當我點擊「確定」按鈕,我驗證文件是有效的,以確保只有接受的類型必須上傳,因爲用戶可以在對話框選擇文件中更改視圖文件並獲取其他文件。我通過正則表達式來檢查它。

this.acceptType.test(file.type) && this.acceptType.test(file.name) 

這個正則表達式我上的一個定義:

$('#file').fileUpload{ 
    acceptType: /(\.|\/)(pdf|gif|jpe?g|png|bmp)$/i 
} 

目前,我只是通過acceptFileType在UI來處理,我能不能通過acceptType在JS驗證。

我嘗試acceptType傳遞到URL,我得到了 「遺漏的類型錯誤:未定義是不是一個函數」

+0

@Hatsjoem:A站點是虛擬的,它只是處理上傳文件。 B必須是傳遞文件類型才能進行過濾。我的企業需要它。 – TPL

+3

不要這樣做。由於它是從客戶端傳入的,因此用戶可以更改正則表達式。這種事情導致了安全漏洞。找到更好的解決方案。 –

+0

@AntP正是我所想的 – Hatsjoem

回答

0

作爲@ AntP表示,它將在我的應用程序中具有很大的差距安全性。我會稍微改變我的業務邏輯,將業務轉移到現場。我會以此作爲答案。感謝AntP

0

使用此代碼來驗證您的文件

VAR EXT = $( '#my_file_field') .VAL()分裂( '')POP()toLowerCase()。;

如果($。inArray(分機,[ 'GIF', 'PNG', 'JPG', 'JPEG'])== - 1){

alert('invalid extension!'); 

}

相關問題