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