x-kom hosting

[C++/CMD] Upload pliku przez FTP - problem..

Przejdź do rekomendowanej odpowiedzi Autor: leggo ,
diego411
utworzono
utworzono (edytowane)

Witam. Mam pewien problem. Otóż napisałem program w C++ który w pewien sposób modyfikuje plik .html.

Po modyfikacji następuję wywołanie pliku .bat który ma za zadanie wysłanie gotowego pliku .html na FTP.

Program modyfikujący (C++) działa znakomicie lecz podczas uploadu na FTP (CMD) kawałek pliku zostaje obcięte!

Tak podczas wysyłania, gdyż sprawdzam gotowy plik po modyfikacji i jest poprawny. 

Problem ten występuję tylko gdy .bat wywoływany jest przez program modyfikujący plik, jeżeli zmodyfikuje plik programem bez wywołania uploadu i ręcznie odpale plik uploadujący (BAT) to nie obcina. 

Tutaj SS: http://iv.pl/images/73794012968152968583.png

Po lewej ręczne odpalenie uploadu, po prawej automatyczne wywołanie z programu w c++.

Jak widać ten sam plik a różni się w wielkości. 

 

Proszę o pomoc.. 

leggo
komentarz
komentarz

Szkoda, że nie pokazałeś choć fragmentu kodu. Jak rozumiem w programie tworzysz plik, zapisujesz go na dysku, a następnie wysyłasz.

Jak wywołujesz bat?

Zamykasz modyfikowany plik przed wysłaniem?

  • Dobra wypowiedź 1
diego411
komentarz
komentarz

Wybacz, zapomniałem. Dokładnie tak, program w c++ tworzy plik, zapisuje (i jest w całości gdyż sprawdzam zawartość)

Wywołanie poprzez funkcje

void FTP(string sciezka)
{
    system(sciezka.c_str());
}
gdzie sciezka=="upload.bat".
 
upload.bat:
ftp -n -s:polecenia.txt

polecenia.txt:

open ftp.xxxxx.pl
user xxx xxx
cd www
del index.html
put index.html
quit

Dodam że wszystko działało jakiś tydzień temu.

diego411
komentarz
komentarz

Okazało się że plik.close(); był po wywołaniu funkcji odpalającej .bat i dane się zapisywały po wysłaniu na ftpa.

Pozdrawiam!

  • Rekomendowana odpowiedź
leggo
komentarz
komentarz

Zamykasz modyfikowany plik przed wysłaniem?
  • Dobra wypowiedź 1
diego411
komentarz
komentarz (edytowane)

Dzięki za pomoc.

Mam jeszcze pytanie. Jak zrobić zabezpieczenie przed ewentualnym brakiem dostępu do sieci.

Chodzi o to że gdy uruchamiam program to chce najpierw sprawdzić czy jest dostęp do sieci.

Da się coś takiego w CMD zrobić?

leggo
komentarz
komentarz

Możesz użyć polecenia ping.

diego411
komentarz
komentarz

Dużo mi to nie mówi, użycie ping da mi tylko komunikat że nie ma połączenia, czy coś podobnego, a ja potrzebuje zamknąć program w tym momencie.

Próbowałem z if i ERRORCODE ale nie wychodziło..

leggo
komentarz
komentarz

Po pingowaniu wstawisz coś takiego:

if errorlevel 1 goto blad
rem tutaj wysyłanie pliku (wywołanie pliku polecenia.txt)
goto koniec
:blad
echo brak polaczenia
:koniec
  • Dobra wypowiedź 1
diego411
komentarz
komentarz

O, dziękuję bardzo. Pozdrawiam:)

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.