ASP 上传/传输图像

ASP 上传/传输图像

我有一个 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 的一个问题。我们已通过部分禁用该程序解决了该问题。我们希望在下一个版本中修复此问题。

相关内容