ASP carregando / transferindo imagens

2

Eu tenho um serviço web ASP, que permite a vários usuários colocar alguns dados em um banco de dados e fazer o upload de algumas imagens. Como os usuários têm diferentes sites, o serviço da Web carrega a imagem em um primeiro diretório em seu próprio espaço e, em seguida, chama uma página ASP localizada no domínio do usuário passando o caminho para a imagem (armazenado corretamente) da seguinte maneira:

MResponseBackAsp(Session("Dominio") & "trasferisci.asp?nomefile=" & Session.SessionID & "-" & name)

Então, aqui vem o problema, eu recebo a seguinte mensagem:

Microsoft VBScript runtime error '800a0005' 
Invalid procedure call or argument 
/trasferisci.asp, line 28 Si è verificato un errore nel salvataggio dell'immagine

O código relativo a essa linha é comentado:

<%  
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"
%>

Mas as melhores partes vêm agora:  1) Se nós chamamos trasferisci.asp manualmente trabalha;  2) Se nós atualizarmos o global.asa, então ele funciona novamente por um tempo

Eu li em algum lugar que poderia haver alguns problemas com o upload de imagens, onde está o problema? Sugestões?

Obrigado a todos.

PS (edit): Eu postei esta questão aqui porque nós pensamos que os problemas estão no Sistema, não no código. Eu me desculpo se não for.

    
por IssamTP 15.09.2010 / 12:18

2 respostas

0

Foi um problema com o nosso antivírus GData. Nós resolvemos isso desativando parcialmente o programa. Na próxima versão, esperamos que isso seja corrigido.

    
por 09.12.2010 / 17:43
0

A mensagem de erro

Microsoft VBScript runtime error '800a0005'
Invalid procedure call or argument

enquanto o upload de arquivos provavelmente está relacionado ao servidor. Pode não suportar algumas das novas funções do VBScript.

Talvez tenha uma versão antiga ou desatualizada do Microsoft Data Access Components (MDAC) e / ou VBScript.

A propósito, você não deveria usar o

 Response.BinaryWrite()

método ao gravar dados binários?

Além disso, emitiria Response.Clear() e definiria o cabeçalho de resposta HTTP correto (de acordo com o tipo de arquivo MIME): Response.ContentType = "..." .

    
por 15.09.2010 / 14:05