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.
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.
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 = "..."
.