昨天給公司伺服器重做了一下系統,遇到Asp附件無法上傳,之前伺服器上使用好好的,怎麼重做了就不正常了,於是一番google,baidu,下面將解決辦法送出,協助碰到該問題的朋友少走彎路:
1,許可權問題
請確保您所上傳檔案的檔案夾"來賓使用者"有可寫入的許可權,有的是存入資料庫的,也要有修改許可權.
2,檔案大小限制
IIS 6 出於安全考慮, 預設最大請求200K(也即最大提交資料限額為200KByte, 204800Byte).
解決辦法:
關閉 IIS Admin Service 服務
開啟 \Windows\system32\inesrv\metabase.xml
修改 ASPMaxRequestEntityAllowed 的值為自己需要的, 預設為 204800
啟動 IIS Admin Service
修改之後,同時需要修改machine.config檔案
Asp.net中,上傳檔案的預設大小是4096 KB,也就是4M,不過你可以在Web.config中更改這個資料。通常更常用的的方法是直接修改 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\CONFIG目錄下的 machine.config檔案(Framework版本會不同,你用什麼版本就進什麼版本的目錄),尋找httpruntime在這一行將maxRequestLength的值改為理想的值,比如想要8M,就輸入8192。
3,中文系統,安裝的IIS的英文補丁
經過檢查,發現客戶之前使用的主機是 windows 2003中文版,後來改換成windows英文版的空間,結果就出錯了.
一般呢,系統升級了IIS或者打過補丁後有時也會出現同樣的問題,我們只要在ASP檔案前加上一段代碼
<!-- must be fist line in ASP -->
<% @LCID=4100 %>
4,語言問題
在控制台裡把地區設定設定為【中國】
5,日期,時間問題
在控制台裡把地區和語言選項,地區選項裡面,設定時間格式為:H:mm:ss,並在控制台"日期時間“更改時區為北京.(之所以改這裡,是因為有的附件傳上去是用時間命名的,如果時間格式有錯,會導致程式報錯)
6,上傳的檔案使用的中文名稱或路徑
使用ASP無組件上傳的話,因為不支援中文,所以需要檢查上傳路徑上是否包含中文.
7,報“Microsoft VBScript 執行階段錯誤 錯誤 '800a0005' 無效的程序呼叫或參數: 'chr' ”錯誤(我的屬於這種問題)
Microsoft VBScript runtime error '800a0005' Invalid procedure call or argument: 'Chr' /admin/inc/UPLOAD.INC,
line 75 出現如此錯誤可能是伺服器用的是英文版本,因為 Chr 函數返回 String,其中包含有與指定的字元代碼相關的字元 。
相關文法:Chr(charcode) 必要的 charcode 參數是一個用來識別某字元的 Long。說明:0 到 31 之間的數字與標準的非列印 ASCII 代碼相同。
例如,Chr(10) 可以返回換行字元。charcode 的正常範圍為 0 – 255。然而,在 DBCS 系統,charcode 的實際範圍為 -32768 到 65535。 注意: ChrB 函數作用於包含在 String 中的位元組資料。ChrB 總是返回一個單位元組,而不是返回一個字元,一個字元可能是一個或兩個位元組。ChrW 函數返回包含 Unicode 的 String,若在不支援 Unicode 的平台上,則其功能與 Chr 函數相同。
所以把出錯的line75行代碼:stemp=stemp&chr(AscW(ChrB(AscB(upfile_5xSoft_Stream.Read(1)))&ChrB(c))) 中的chr換成chrw就可以啦