У меня есть веб-сервис ASP, который позволяет различным пользователям помещать некоторые данные в базу данных и загружать некоторые изображения. Поскольку у пользователей разные веб-сайты, веб-служба загружает изображение в первый каталог в своем собственном пространстве, затем вызывает веб-страницу 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 = "..."
.