使用经典ASP上传实用程序

时间:2017-06-06 10:42:36

标签: file-upload asp-classic

我有一个经典的ASP应用程序,目前部署在服务器A上。我已经"上传附件"我尝试使用下面的经典ASP代码在服务器A(我的ASP应用程序部署在IIS中)上传文件的功能。当我尝试在服务器A上传文件时,我的文件会成功快速上传。但是,当我尝试将文件上传到另一个服务器B时,我无法使用相同的实用程序ASP代码上传文件。我的问题是我的应用程序部署在服务器A上,我需要通过应用程序将文件上传到服务器B.是否可能?请帮忙。

我当前的上传文件实用程序代码:

    <% Class Loader
Private dict

Private Sub Class_Initialize
  Set dict = Server.CreateObject("Scripting.Dictionary")
End Sub

Private Sub Class_Terminate
  If IsObject(intDict) Then
    intDict.RemoveAll
    Set intDict = Nothing
  End If
  If IsObject(dict) Then
    dict.RemoveAll
    Set dict = Nothing
  End If
End Sub

Public Property Get Count
  Count = dict.Count
End Property

Public Sub Initialize
  If Request.TotalBytes > 0 Then
  response.write(Request.TotalBytes)
    Dim binData
      binData = Request.BinaryRead(Request.TotalBytes)
      getData binData
  End If
End Sub

Public Function getFileData(name)
  If dict.Exists(name) Then
    getFileData = dict(name).Item("Value")
    Else
    getFileData = ""
  End If
End Function

Public Function getValue(name)
  Dim gv
  If dict.Exists(name) Then
    gv = CStr(dict(name).Item("Value"))

    gv = Left(gv,Len(gv)-2)
    getValue = gv
  Else
    getValue = ""
  End If
End Function

Public Function saveToFile(name, path)
  If dict.Exists(name) Then
    Dim temp
      temp = dict(name).Item("Value")
    Dim fso
      Set fso = Server.CreateObject("Scripting.FileSystemObject")
    Dim file
    'File write Exception handling - David 
    On Error Resume Next
    Set file = fso.CreateTextFile(path)

    For tPoint = 1 to LenB(temp)
        file.Write Chr(AscB(MidB(temp,tPoint,1)))
    Next
    file.Close

    If Err.Number<>0 then   
        saveToFile = False
    else
        saveToFile = True
    End if
    On Error Goto 0
  Else
      saveToFile = False
  End If
End Function

Public Function getFileName(name)
  If dict.Exists(name) Then
    Dim temp, tempPos
      temp = dict(name).Item("FileName")
      tempPos = 1 + InStrRev(temp, "\")
      getFileName = Mid(temp, tempPos)
  Else
    getFileName = ""
  End If
End Function

Public Function getFilePath(name)
  If dict.Exists(name) Then
    Dim temp, tempPos
      temp = dict(name).Item("FileName")
      tempPos = InStrRev(temp, "\")
      getFilePath = Mid(temp, 1, tempPos)
  Else
    getFilePath = ""
  End If
End Function

Public Function getFilePathComplete(name)
  If dict.Exists(name) Then
    getFilePathComplete = dict(name).Item("FileName")
  Else
    getFilePathComplete = ""
  End If
End Function

Public Function getFileSize(name)
  If dict.Exists(name) Then
    getFileSize = LenB(dict(name).Item("Value"))
  Else
    getFileSize = 0
  End If
End Function

Public Function getFileSizeTranslated(name)
  If dict.Exists(name) Then
    temp = LenB(dict(name).Item("Value"))
      If temp <= 1024 Then
        getFileSizeTranslated = temp & " bytes"  
      Else
        temp = FormatNumber((temp / 1024), 2)
        getFileSizeTranslated = temp & " kilobytes"
      End If
  Else
    getFileSizeTranslated = ""
  End If
End Function

Public Function getContentType(name)
  If dict.Exists(name) Then
    getContentType = dict(name).Item("ContentType")
  Else
    getContentType = ""
  End If
End Function




  Private Sub getData(rawData)

Dim separator 

  separator = MidB(rawData, 1, InstrB(1, rawData, ChrB(13)) - 1)

Dim lenSeparator
  lenSeparator = LenB(separator)

Dim currentPos
  currentPos = 1
Dim inStrByte
  inStrByte = 1
Dim value, mValue
Dim tempValue
  tempValue = ""

While inStrByte > 0


  inStrByte = InStrB(currentPos, rawData, separator)
  mValue = inStrByte - currentPos

  If mValue > 1 Then
    value = MidB(rawData, currentPos, mValue)

    Dim begPos, endPos, midValue, nValue
    Dim intDict
      Set intDict = Server.CreateObject("Scripting.Dictionary")

      begPos = 1 + InStrB(1, value, ChrB(34))
      endPos = InStrB(begPos + 1, value, ChrB(34))
      nValue = endPos

    Dim nameN
      nameN = MidB(value, begPos, endPos - begPos)

    Dim nameValue, isValid
      isValid = True

      If InStrB(1, value, stringToByte("Content-Type")) > 1 Then

        begPos = 1 + InStrB(endPos + 1, value, ChrB(34))
        endPos = InStrB(begPos + 1, value, ChrB(34))

        If endPos = 0 Then
          endPos = begPos + 1
          isValid = False
        End If

        midValue = MidB(value, begPos, endPos - begPos)
          intDict.Add "FileName", trim(byteToString(midValue))

      begPos = 14 + InStrB(endPos + 1, value, stringToByte("Content-Type:"))
      endPos = InStrB(begPos, value, ChrB(13))

        midValue = MidB(value, begPos, endPos - begPos)
          intDict.Add "ContentType", trim(byteToString(midValue))

        begPos = endPos + 4
        endPos = LenB(value)

        nameValue = MidB(value, begPos, ((endPos - begPos) - 1))
      Else
        nameValue = trim(byteToString(MidB(value, nValue + 5)))
      End If

      If isValid = True Then

        intDict.Add "Value", nameValue
        intDict.Add "Name", nameN

        dict.Add byteToString(nameN), intDict
      End If
  End If

  currentPos = lenSeparator + inStrByte
Wend
         End Sub

         End Class

          Private Function stringToByte(toConv)

Dim tempChar

        For i = 1 to Len(toConv)
        tempChar = Mid(toConv, i, 1)
         stringToByte = stringToByte & chrB(AscB(tempChar))
 Next

         End Function

   Private Function byteToString(toConv)

              For i = 1 to LenB(toConv)
              byteToString = byteToString & Chr(AscB(MidB(toConv,i,1))) 
               Next
             End Function
       %>

1 个答案:

答案 0 :(得分:1)

可能是IIS中Windows的默认上传大小:196Kb ...