00001
00002
00003
00004
00005 #if !defined(AFX_FSFTPFILE_H__12AF861F_17DB_4F84_8679_7B8EBDCD4D75__INCLUDED_)
00006 #define AFX_FSFTPFILE_H__12AF861F_17DB_4F84_8679_7B8EBDCD4D75__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif
00011
00012 #include <winsock.h>
00013 #include "fsInternetFile.h"
00014 #include "fsinet.h"
00015
00016 enum fsFtpTransferType
00017 {
00018 FTT_BINARY,
00019 FTT_ASCII,
00020 FTT_UNKNOWN
00021 };
00022
00023 class fsFtpFile : public fsInternetFile
00024 {
00025 public:
00026
00027 fsInternetResult Write (LPBYTE pBuffer, DWORD dwToWrite, DWORD *pdwWritten);
00028
00029
00030
00031 fsInternetResult OpenEx (LPCSTR pszFilePath, UINT64 uStartPos, UINT64 uUploadPartSize = _UI64_MAX, UINT64 uUploadTotalSize = _UI64_MAX);
00032 fsFtpTransferType GetTransferType();
00033 void SetDontUseLIST (BOOL b);
00034
00035 virtual fsInternetResult QuerySize (LPCSTR pszFilePath);
00036
00037 virtual void CloseHandle();
00038
00039 fsInternetResult SetTransferType (fsFtpTransferType enType);
00040
00041 fsInternetResult Read (LPBYTE pBuffer, DWORD dwToRead, DWORD *pdwRead);
00042
00043 fsInternetResult Open (LPCSTR pszFilePath, UINT64 uStartPos);
00044 fsFtpFile();
00045 virtual ~fsFtpFile();
00046
00047 protected:
00048 static BOOL FtpCommand (HINTERNET hConnect, BOOL fExpectResponse, DWORD dwFlags, LPCSTR pszCommand, DWORD_PTR dwContext, HINTERNET* phFtpCommand);
00049 BOOL Send_LIST (LPSTR pszCmd, LPCSTR pszFile);
00050 BOOL m_bDontUseLIST;
00051
00052 BOOL IsDigit (char c);
00053
00054
00055 fsInternetResult PASV_ConnectSocket();
00056
00057 BOOL ParseSIZE();
00058
00059 fsInternetResult FtpError ();
00060
00061
00062
00063 SHORT OpenSocket();
00064
00065 fsString m_strPORT;
00066 SOCKET m_sFile;
00067 SOCKET m_sRcv;
00068 void ReceiveExtError ();
00069 DWORD m_dwTransferType;
00070 };
00071
00072 #endif