none
撰寫FTP上傳功能時發生runtime error RRS feed

  • 一般討論

  • 原本的寫法是

    Open LocalFile For Binary As #ff  
    If (ff = 0) Then Exit Function 
     
      nTotFileLen = LOF(ff)  
      SentBytes = 0  
      nFileLen = 0  
      spRate = 0  

    原本是使用LOF(ff)傳回檔案大小 但是我的資料有4G
    因此LOF傳回檔案的時候發生溢位情況
    因此改用下面改寫
    Dim FSO As Scripting.FileSystemObject 'Set reference to Microsoft Scripting Runtime  
    Set FSO = New Scripting.FileSystemObject  
    Dim File As Scripting.File  

    If FSO.FileExists(LocalFile) Then 
       Set File = FSO.GetFile(LocalFile)  

      'version = File.version  
      nTotFileLen = File.Size  
     Else 
       Exit Function 
     End If 

    利用File.Size取回檔案大小。
    但是當我在讀取檔案,下面程式碼:
    Open LocalFile For Binary As #ff  
    If (ff = 0) Then Exit Function 
      
        'nTotFileLen = LOF(ff)  
        SentBytes = 0  
        nFileLen = 0  
        spRate = 0  
          
        hFile = FtpOpenFile(hConn, Destination, GENERIC_WRITE, FTP_TRANSFER_TYPE_BINARY, 0)  
         If hFile = 0 Then 
             Exit Function 
         End If 
           
         Do 
             Get #ff, , sBuffer  
             Label1.Caption = "檔案上傳中" 
             Label1.Refresh  
             If nFileLen < nTotFileLen - sReadBuffer Then 
                 If InternetWriteFile(hFile, sBuffer, sReadBuffer, nRet) = 0 Then 
                     'Call RemoveFile(DelFile)  
                     Exit Function 
                 End If 
                 SentBytes = SentBytes + sReadBuffer  
                 nFileLen = nFileLen + sReadBuffer  
             Else 
                 If InternetWriteFile(hFile, sBuffer, nTotFileLen - nFileLen, nRet) = 0 Then 
                     'Call RemoveFile(DelFile)  
                     Exit Function 
                 End If 
                 SentBytes = SentBytes + (nTotFileLen - nFileLen)  
                 nFileLen = nTotFileLen  
             End If 
         Loop Until nFileLen >= nTotFileLen  
     Close #ff 

    因為我檔案有4G這麼大,可是當我Get #ff, , sBuffer 資料上傳大概1.4G的時候,
    發生runtime error'63':資料錄個數不正確。
    請問一下各位高手,這是一個什麼樣的情形。
    要怎麼改寫才能讓我的程式不會有問題??

     

    2007年3月21日 上午 07:09