以前我一直使用ASP無組件上傳類來上傳文件。但是今天又個客戶反映說。不能上傳。出現錯誤。,但在我電腦上測試沒問題。后來發現客戶用的是IE8
於是開始找解決方法
錯誤如下:
Microsoft VBScript 運行時錯誤 錯誤 '800a0005' 無效的過程調用或參數: 'Instr'
出錯的原因,是IE7/Firefox3中,上傳文件時不再包含文件在本地的完整路徑,而只有文件名。這使得原有的文件名提取機制出錯。上面的錯誤,就是因為Instr函數中的參數出錯了。受到牽連的還有上傳圖片時,用JavaScript預覽圖片的功能。
解決方法:
1、治標方式。 IE7以上版本其實把文件上傳是否發送完整的本地路徑做成一個選項,在IE的Internet選項中可以設置。如下圖:


由於默認是禁用的,所以會出現問題,把它啟用就可以解決問題了。但這是治標的方法,如果網頁是面向普通用戶的,你不可能要求所有用戶都來改變這個設置。
2、治本。 治本的方法只能靠改程序了。對於圖片預覽的,目前我還沒有很好的方法獲取到圖片的本地完整路徑,所以只能通過判斷瀏覽器的版本,如果是IE7/FireFox3的版本,就提示不支持預覽。對於上傳文件功能的判斷,問題既然知道原因了,解決的方法自然也就手到擒來了。在操作文件名是,注意是單純的文件名,而非完整文件路徑。