|
we know we can access a file(dload, create, delete...) on a ftpsite
by some software, but i try to write a program with error for filename:...
The Codes i wrote can not found file "My Projectinfo.inf", Why?
Are there some way to access file has filname have space?
My_Fun()
{
...
pFtpConn = mysession.GetFtpConnection( my_ftpserver, my_user, my_pass );
CFtpFileFind finder(pFtpConn);
BOOL bWorking = finder.FindFile("/My Projectinfo.inf" );
...
}
Thanks!!!
|
|
|
|
|
lewislewis_lewis wrote:
BOOL bWorking = finder.FindFile("/My Projectinfo.inf" );
If FindFile() returns FALSE , what does GetLastError() return?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
if( !bWorking )
{
DWORD errcode = GetLastError();
LPVOID lpMsgBuf;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
errcode, //GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
LocalFree( lpMsgBuf );
}
the MessageBox dispaly :"There are no more files"
What is wrong?
|
|
|
|
|
Does your code work for files with no spaces in the name?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
YES, I tested it maney times.
|
|
|
|
|
Did you remember to call FindNextFile() before using any of the other CFtpFileFind methods? What does the following produce:
BOOL bWorking = finder.FindFile("*.*");
while (bWorking)
{
bWorking = finder.FindNextFile();
TRACE("]%s[\n", (LPCTSTR) finder.GetFileURL());
} Does it show the name of the file with spaces in its name?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
If I get FileURL, Every thing is OK, But I can not manipulate the file
with space filename.
|
|
|
|
|
Define "manipulate." Has the original problem been fixed, and now you have encountered another?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
My_Fun()
{
...
pFtpConn = mysession.GetFtpConnection( my_ftpserver, my_user, my_pass );
CFtpFileFind finder(pFtpConn);
BOOL bWorking = finder.FindFile("/*.*" );
while( bWorking )
{
bWorking = finder.FindNextFile();
sURL = finder.GetFileURL();
pFtpConn->GetFile( sURL, "C:\Dloadfile.inf" );
}
...
}
Nothing donwload!!!
|
|
|
|
|
lewislewis_lewis wrote:
pFtpConn->GetFile( sURL, "C:\Dloadfile.inf" );
You need to use two backslashes.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
My_Fun()
{
...
pFtpConn = mysession.GetFtpConnection( my_ftpserver, my_user, my_pass );
CFtpFileFind finder(pFtpConn);
BOOL bWorking = finder.FindFile("/*.*" );
while( bWorking )
{
bWorking = finder.FindNextFile();
sURL = finder.GetFileURL();
pFtpConn->GetFile( sURL, "C:/Dloadfile.inf" );
}
...
}
No work. I think GetFileURL return URL only, can not use as file name.
For file name, only work for normal file name. Why?
How to manipulate a file with filename have space?
|
|
|
|
|
lewislewis_lewis wrote:
sURL = finder.GetFileURL();
pFtpConn->GetFile( sURL, "C:/Dloadfile.inf" );
Is sURL non-empty? What does GetFile() return?
Have you tried to retrieve the file using command line FTP (to isolate if the problem is in your code or in the FTP process)?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
the sURL = "ftp://ftp.ftpserver.com/Dloadfile.inf"
|
|
|
|
|
lewislewis_lewis wrote:
the sURL = "ftp://ftp.ftpserver.com/Dloadfile.inf"
There are no spaces in the name.
Have you tried the command-line FTP?
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
the sURL = "ftp://ftp.ftpserver.com/My Projectinfo.inf"
When I use MS explorer, in adreess box, I type in: ftp://ftp.ftpserver.com, I can see all files, and use copy-paste will download any files!
|
|
|
|
|
Ok, what does GetFile() return? If it's FALSE , what about GetLastError() .
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Error code is 12003, but string is empty
|
|
|
|
|
lewislewis_lewis wrote:
Error code is 12003...
Which is ERROR_INTERNET_EXTENDED_ERROR . Use InternetGetLastResponseInfo() to get more details.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
Do we have the way to manipulate the files?
|
|
|
|
|
I'm not sure what you mean by "manipulate." You are wanting to download a file from an FTP server using GetFile() . My suggestions thus far have been unsuccessful (it's not like I was holding something back, I just don't have an FTP server to test stuff on). You might try using the CFtpConnection ::OpenFile() /CInternetFile::Read() /CInternetFile::Write() trio instead.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
ftp://ftp.microsoft.com/PSS/Tools/Developer%20Support Tools/WINDBG 4.0.18/
dbg_x86.exe
and use CFtpConnection class function : GetFile, OpenFile, SetCurrentDirectory
Thanks
|
|
|
|
|
This worked for me:
CInternetSession ISession;
CFtpConnection *pFTPConnect = NULL;
BOOL bContinue;
pFTPConnect = ISession.GetFtpConnection(_T("ftp.microsoft.com"), _T("anonymous"), _T("name@company.com"));
bContinue = pFTPConnect->SetCurrentDirectory(_T("/PSS"));
if (bContinue)
bContinue = pFTPConnect->SetCurrentDirectory(_T("Tools"));
if (bContinue)
bContinue = pFTPConnect->SetCurrentDirectory(_T("Developer Support Tools"));
if (bContinue)
bContinue = pFTPConnect->SetCurrentDirectory(_T("WINDBG 4.0.18"));
if (bContinue)
pFTPConnect->GetFile(_T("dbg_x86.exe"), _T("c:\\dbg_x86.exe"));
if (NULL != pFTPConnect)
pFTPConnect->Close();
delete pFTPConnect; You'll need to put in the necessary error checking.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|
|
1)If your code ok for "ftp://ftp.microsoft.com/deskapps/games/public/cc3/Screenshots/Stalingrad zoom out.bmp"?
The file name have space!!!
2)_T() is necessary? why?
3) How to use CFtpConnection ::OpenFile()/CInternetFile::Read()/CInternetFile::Write()? Why not use CFtpConnection::GetFile()
Thanks!!!
|
|
|
|
|
I tried to disable the "Save" toolbutton on the toolbar.
I tried to set the state of "Save" toolbutton to disabled mode by specifying
TBSTATE_INDETERMINATE . But this doesnt disable the save toolbutton.
TBBUTTONINFO buttonInfo;
buttonInfo.cbSize = sizeof( TBBUTTONINFO );
buttonInfo.dwMask = TBIF_COMMAND;
buttonInfo.fsState = TBSTATE_INDETERMINATE ;
m_wndToolBar.GetToolBarCtrl().SetButtonInfo(ID2_FILE_SAVE, &buttonInfo);
Let me know the exact procedure to do the same.
Thanx in advance
laiju
|
|
|
|
|
Check out ON_UPDATE_COMMAND_UI(ID2_FILE_SAVE, ...) . In the handler function, you can easily enable/disable the Save button.
"Ideas are a dime a dozen. People who put them into action are priceless." - Unknown
|
|
|
|