我有一个 ASP Web 服务,允许各种用户将一些数据放入数据库并上传一些图像。由于用户有不同的网站,Web 服务将图像上传到其自身空间的第一个目录中,然后调用位于用户域中的 ASP Web 页面,并将图像的路径(正确存储)传递给它,如下所示:
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(编辑):我在这里发布了这个问题,因为我们思考问题出在系统上,而不是代码上。如果不是,我深表歉意。
答案1
错误消息
Microsoft VBScript 运行时错误‘800a0005’
无效的过程调用或参数
而上传文件可能和服务器有关,可能不支持VBScript的一些新功能。
也许它有一个旧版本或过时的 Microsoft 数据访问组件 (MDAC) 和/或 VBScript。
顺便问一下,你不应该使用
Response.BinaryWrite()
方法当写入二进制数据时?
另外,我会发出Response.Clear()
并设置正确的 HTTP 响应标头(根据文件的 MIME 类型)Response.ContentType = "..."
:。
答案2
这是我们的防病毒软件 GData 的一个问题。我们已通过部分禁用该程序解决了该问题。我们希望在下一个版本中修复此问题。