2017-06-06 19 views
0

我有一个传统的ASP应用程序,目前在服务器A上部署。我有“上传附件”功能,通过它我试图上传服务器A上的文件我的ASP应用程序部署在IIS中)本身使用以下经典的ASP代码。当我尝试在服务器A上传文件时,我的文件正在成功快速上传。但是,当我试图将文件上传到另一台服务器B时,我无法使用相同的实用程序ASP代码上传文件。我的问题是我的应用程序部署在服务器A上,我需要通过应用程序将文件上传到服务器B。可能吗?请帮忙。使用传统的ASP上传实用程序从一台服务器到另一台服务器的文件上传问题

我现在的上传文件程序代码:

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

我的猜测是,你没有对目录的写入权限您正在尝试上传文件,但我需要更多信息。你收到什么错误信息? – John

+0

谢谢,回复。但是,我对该目录有写权限。上传大小超过5 MB左右的文件时出现超时错误。但是,如果文件大小大约为1 KB,那么它会成功上传。 – user1783170

回答

1

也许是默认上传从IIS窗口大小:196KB ...

+0

这不提供问题的答案。一旦你有足够的[声誉](https://stackoverflow.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18797006) – Patrick

相关问题