Image
ASP 上傳/傳輸圖像
我有一個 ASP Web 服務,它允許各種使用者將一些數據放入數據庫並上傳一些圖像。由於使用者有不同的網站,網路服務將圖像上傳到它自己空間的第一個目錄中,然後呼叫位於使用者域中的 ASP 網頁,將圖像的路徑(正確儲存)傳遞給它,如下所示:
MResponseBackAsp(Session("Dominio") & "trasferisci.asp?nomefile=" & Session.SessionID & "-" & name)
所以,麻煩來了,我收到以下消息:
Microsoft VBScript runtime error '800a0005' Invalid procedure call or argument /trasferisci.asp, line 28 Si è verificato un errore nel salvataggio dell'immagine
對與該行相關的程式碼進行了註釋:
<% nomeFile = Request("nomefile") Dim lStato Dim objHTTP Dim strDataIn 'Randomize() Set objHTTP = CreateObject("Microsoft.XMLHTTP") objHTTP.Open "GET", "http://URL/" & nomeFile, False objHTTP.Send lStato= objHTTP.Status strDataIn= objHTTP.ResponseBody 'Binario Set objHTTP = Nothing If (lStato<>200) Or (Err.Number<>0) Then problema = "Errore " & lStato & " o " & Err.Description & "." End If newNomeFile = right(nomeFile,len(nomeFile)-instr(nomeFile,"-")) fileDaSalvare = Server.mapPath(Application("news_immagini") & newNomeFile) Set objFSO = Server.CreateObject("Scripting.FileSystemObject") If objFSO.FileExists(fileDaSalvare) Then objFSO.DeleteFile(fileDaSalvare) Set objFl = objFSO.CreateTextFile(fileDaSalvare, true) objFl.Write BinaryToString(strDataIn) objFl.Close() Set objFl = Nothing Set objFSO = Nothing Function BinaryToString(Binary) dim c1, c2, c3, p1, p2, p3 Dim L c1 = 1 : c2 = 1 : c3 = 1 L = LenB(Binary) Do While c1<=L p3 = p3 & Chr(AscB(MidB(Binary,c1,1))) c1 = c1 + 1 : c3 = c3 + 1 if c3>300 then p2 = p2 & p3 p3 = "" c3 = 1 c2 = c2 + 1 if c2>200 then p1 = p1 & p2 p2 = "" c2 = 1 End If End If Loop BinaryToString = p1 & p2 & p3 End Function Response.write "salvato" %>
但是現在最好的部分來了: 1)如果我們手動呼叫 trasferisci.asp 它可以工作;2)如果我們刷新 global.asa 然後它會再次工作一段時間
我在某處讀到圖像上傳可能存在一些問題,問題出在哪裡?建議?
謝謝大家。
PS(編輯):我在這裡發布了這個問題,因為我們認為問題出在系統中,而不是程式碼中。如果不是,我道歉。
我們的防病毒 GData 有問題。我們已經解決了部分禁用程序的問題。在下一個版本中,我們希望能解決這個問題。
錯誤資訊
Microsoft VBScript 執行時錯誤“800a0005”
無效的過程呼叫或參數
而上傳文件可能與伺服器有關。它可能不支持 VBScript 的一些較新的功能。
可能它具有舊版本或過時版本的 Microsoft 數據訪問組件 (MDAC) 和/或 VBScript。
順便說一句,你不應該使用
Response.BinaryWrite()
寫入二進制數據時的方法?
此外,我會發出
Response.Clear()
並設置正確的 HTTP 響應標頭(根據文件 MIME 類型)Response.ContentType = "..."
:.