Назад | Перейти на главную страницу

Загрузка / передача изображений ASP

У меня есть веб-сервис 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 = "...".