Image

ASP 上傳/傳輸圖像

  • December 9, 2010

我有一個 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 = "...":.

引用自:https://serverfault.com/questions/181321