Member 12899279
i think i figured it out below is the code
string hashi ="files";
ifstream read2("ScannedFiles.txt");
ofstream read3("Problem.txt", ios::app);
/// ofstream read4("Uploaded.txt", ios::app);
vector<string>filen2;
string st2;
while (getline(read2, st2))
{
if (st2.size() > 0)
filen2.push_back(st2);
else
break;
}
read2.close();
int a = filen2.size();
int b = a;
int h = 1;
for (vector<string>::iterator t = filen2.begin(); t != filen2.end(); t++)
{
string st3;
vector<string>upl;
ifstream uploaded("Uploaded.txt", ios::app);
while (getline(uploaded, st3))
{
if (st3.size() > 0)
upl.push_back(st3);
else
break;
}
uploaded.close();
int c = upl.size();
int i = 0;
string currfil = t[i];
string name = getFileName(currfil);
bool toWrite = true;
for (vector<string>::iterator t2 = upl.begin(); t2 != upl.end(); t2++)
{
int j = 0;
if (c <= 0)
break;
else
{
if (t2[j] == currfil)
{
toWrite = false;
}
}
}
if (toWrite == true)
{
CURL *curl;
CURLcode res;
curl_httppost* post = NULL;
curl_httppost* last = NULL;
/*HttpPost* post = NULL;
HttpPost* last = NULL;*/
//string name = "CV.pdf";
//string path = "E:\\BIMS Uni\\CV.pdf";
//string name = getFileName(path);
// string request = "Md5=" + hashi;
curl = curl_easy_init();
if (curl)
{
// curl_easy_setopt(curl, CURLOPT_POSTFIELDS, request.c_str());
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "Md5",
CURLFORM_COPYCONTENTS, hashi.c_str(),
CURLFORM_END);
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "name2",
CURLFORM_COPYCONTENTS, name.c_str(),
CURLFORM_END);
curl_formadd(&post, &last,
CURLFORM_COPYNAME, "file2",
CURLFORM_FILE, currfil.c_str(),
CURLFORM_END);
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8081/PCInfo/test.php");
curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20L);
res = curl_easy_perform(curl);
if (res == 28)
{
read3 << currfil << endl;
//h = h + 1;
}
if (res == 26)
{
//return 0;
read3 << currfil << endl;
//h = h + 1;
}
if (res == 0)
{
// uploaded.close();
ofstream uploaded("Uploaded.txt", ios::app);
uploaded << currfil << endl;
uploaded.close();
}
curl_formfree(post);
}
/*else
{
return 0;
}*/
curl_easy_cleanup(curl);
}
}
return 0;
i am still looking for a more better and clean way because i think it will take too much time
Stefan_Lang
Несколько вопросов:
1. Пожалуйста, не публикуйте свои собственные комментарии или дополнительные вопросы в качестве решения! Если только это не проверенное решение, которое вы успешно проверили, чтобы работать именно так, как вы намеревались! Ваш код, очевидно, не является полным решением, поэтому не публикуйте его как таковой.
2. добавьте любые новые идеи и вопросы к вашей первоначальной публикации! Вот для чего нужна зеленая кнопка [улучшить вопрос] в правом нижнем углу вашего вопроса! (Подсказка: он виден только тогда, когда вы наводите указатель мыши на свой вопрос)
3. пожалуйста, потратьте немного усилий на форматирование ваших сообщений осмысленным образом! Вы только что использовали стандартный тег форматирования для всей публикации, включая код и обычный текст. Это никому не поможет.
3.а) сделайте отдельный текст, код и другие элементы, а затем отформатируйте их отдельно с наиболее подходящими опциями. Текст обычно вообще не должен использовать тег форматирования; код должен использовать соответствующий тег code+language.
3.б) вам не нужно писать эти теги форматирования вручную; вместо этого вы можете просто выбрать блок, который хотите отформатировать, и использовать теги форматирования в верхней части поля редактирования.
3.В) Вы даже можете просмотреть результаты перед публикацией - используйте эту функцию и не публикуйте, если она выглядит не так, как вы ожидали!
3.d) сделайте отступ в коде. перед публикацией или убедитесь, что уже выделенный код не потеряет его. Никто не хочет читать стену текста и разбираться, что к чему!
4. ваши циклы чтения файлов могут работать не так, как ожидалось, из-за двух проблем:
4.a) getline() возвращает объект istream, а не bool. Использование его в качестве условия не имеет никакого смысла. Вместо этого вы должны вызвать соответствующую функцию для проверки состояния объекта istream, например good().
Видишь ли http://www.cplusplus.com/reference/istream/istream/
4.Б) почему вы выходите из цикла после встречи с пустой строкой?
Разве после пустой строки не может быть больше текста?? См. 4.а) о правильной проверке конца файла!
4.В) Я не проверял подробно, но, похоже, ваш код выполняет полнотекстовое сравнение. Для этого вам необходимо эффективно скопировать удаленный файл. Разве это не делает весь процесс устаревшим? Разве вы не хотели избежать копирования всего файла по сети без необходимости? Почему же тогда вы делаете именно это в самом начале своей программы?