Я программирую в C++
и я хочу загрузить файл на свой веб-сервер, который я уже сделал, используя следующий код:
#include "stdafx.h"
#include <windows.h>
#include <wininet.h>
#pragma comment(lib, "wininet")
int _tmain(int argc, _TCHAR* argv[])
{
HINTERNET hInternet;
HINTERNET hFtp;
hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL,NULL,0);
hFtp = InternetConnect(hInternet, L"ftp.freetzi.com", INTERNET_DEFAULT_FTP_PORT, L"myuser.freetzi.com", "mypassword", INTERNET_SERVICE_FTP, 0, 0);
FtpPutFile(hFtp, L"C:\\deneme.txt", L"coolName.txt", FTP_TRANSFER_TYPE_BINARY, 0);
if ( FtpPutFile(hFtp, L"C:\\deneme.txt", L"coolName.txt", FTP_TRANSFER_TYPE_BINARY, 0) )
{
MessageBox(NULL, L"Upload Successful.", L"Title", NULL);
}
else
{
//This is the message I get...
MessageBox(NULL, L"Upload Failed.", L"Title", NULL);
}
InternetCloseHandle(hFtp);
InternetCloseHandle(hInternet);
return 0;
}
Но поскольку эта программа будет использоваться многими людьми, я не могу найти способ переименовать загруженный файл coolname.txt
если целевой файл уже существует, приведенный выше код перезапишет старые данные и перепишет новый из использованных 2 или больше раз,
Я пытался:
2. Функция :-
generateFileName( std::string const& directory, std::string const& rootName, std::string const& extension ) { std::ostringstream results; results.fill( '0' ); results << directory << '/' << rootName << '-' << std::setw(4) << rand() << extension; return results.str(); }
Однако я нашел способ выполнить эту задачу, используя FtpFindFirstFile
Но я не могу понять, как ее использовать. Если бы кто-то мог объяснить мне более ясный или привести несколько примеров, я бы действительно стал априорным.
Ссылка: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384180(v=vs.85).aspx
вы можете определить имя выходного файла как переменную.
#include <iostream>
#include <string>
#include <stdio.h>
#include <time.h>
// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
const std::string currentDateTime() {
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
// Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
// for more information about date/time format
strftime(buf, sizeof(buf), "%Y-%m-%d.%X", &tstruct);
return buf;
}
int main() {
std::cout << "currentDateTime()=" << currentDateTime() << std::endl;
getchar(); // wait for keyboard input
}
Определите имя файла как переменную, в которой мы должны добавить текущую временную метку с именем файла.
Наконец, ваше имя файла будет "coolName_ 2014.06.25.07.08.08.txt".
Я надеюсь, что это поможет вам.