Datei Upload

08/11/2015 - 17:20 von Thomas Meyer | Report spam
Hallo,

folgende Situation:

Es gilt eine CSV-Datei vom lokalen Rechner auf vier unterschiedkiche Server
hochzuladen. Dazu habe ich mir unten stehende Funktion geschrieben.

Das klappt meistens bei den ersten Dervern beiden gut, bei den anderen
beiden nicht. Mitunter funktioniert es auch bei den ersten beiden schon
nicht. Interessanterweise wenn ich die Funktion ein zweites mal aufrufe.

Eine Fehlermeldung kommt nie. Die Dateigröße ist nach dem Aufruf = 0, das
Datum aber aktuell. Der Zugriff ist also möglich, nur die Dateiinhalte
kommen oben nicht an. Ich muss die Datei dann doch manuell via ftp
hochschieben.

Der Delay unten ist ein Versuch, ànderte aber nichts. Ich habe bei ftp_put
auch schon den ASCII-Modus probiert, identische Wirkung. Teilweise geht es,
bei einigen nicht und ein zweiter Versuch ergab immer Dateien mit der Größe
0.


Google zeigte mir, dass das Problem bekannt sei, aber eine wirkliche Lösung
konnte ich bisher nicht finden. Gibt es hier evtl. Vorschlàge oder Hinweise
wo was schief laufen kann?

(Wie man am Code wohl unschwer erkennen kann bin ich alles andere als ein
php-Kenner, aber für meinen Hausgebraucht hat alles bisher gut
funktioniert)

___________________

function csvup ($server, $benutzer, $passwort, $pfad) {

$File = 'blacklist.csv';

$conn_id = ftp_connect("$server");
$login_result = ftp_login($conn_id, "$benutzer", "$passwort");
ftp_pasv($conn_id, true);

if ((!$conn_id) || (!$login_result)) {

echo "FTP Verbindung nicht hergestellt<br>";
die;
}

else {
$Quelle = realpath("G:/Daten-Privat/Homepages/").$File;
echo $pfad;

echo "FTP Verbindung zu ".$server.$pfad." hergestellt ...<br><br>";
}

echo "Stand alte Datei: ".date("d.m.Y H:i",ftp_mdtm($conn_id,
$File))."<br>";
echo "Groesse alte Datei: ".ftp_size($conn_id, $File)."<br><br>";

// upload
if ($path) {
ftp_chdir($conn_id, $pfad);
}

$upload = ftp_put($conn_id, $Quelle, $File, FTP_BINARY);

// Uploadüberprüfung

if (!$upload) {
echo "Upload fehlgeschlagen !<br>";
} else {

echo "Stand neue Datei: ".date("d.m.Y H:i",ftp_mdtm($conn_id,
$File))."<br>";
echo "Groesse neue Datei: ".ftp_size($conn_id, $File)."<br><br>";
}
ftp_quit($conn_id);
echo "FTP Verbindung wurde geschlossen !<br>";

usleep(2000000);

}
 

Lesen sie die antworten

#1 k
08/11/2015 - 19:30 | Warnen spam
Thomas Meyer writes:

Hallo,

folgende Situation:

Es gilt eine CSV-Datei vom lokalen Rechner auf vier unterschiedkiche Server
hochzuladen. Dazu habe ich mir unten stehende Funktion geschrieben.

Das klappt meistens bei den ersten Dervern beiden gut, bei den anderen
beiden nicht. Mitunter funktioniert es auch bei den ersten beiden schon
nicht. Interessanterweise wenn ich die Funktion ein zweites mal aufrufe.

Eine Fehlermeldung kommt nie. Die Dateigröße ist nach dem Aufruf = 0, das
Datum aber aktuell. Der Zugriff ist also möglich, nur die Dateiinhalte
kommen oben nicht an. Ich muss die Datei dann doch manuell via ftp
hochschieben.

Der Delay unten ist ein Versuch, ànderte aber nichts. Ich habe bei ftp_put
auch schon den ASCII-Modus probiert, identische Wirkung. Teilweise geht es,
bei einigen nicht und ein zweiter Versuch ergab immer Dateien mit der Größe
0.


Google zeigte mir, dass das Problem bekannt sei, aber eine wirkliche Lösung
konnte ich bisher nicht finden. Gibt es hier evtl. Vorschlàge oder Hinweise
wo was schief laufen kann?

(Wie man am Code wohl unschwer erkennen kann bin ich alles andere als ein
php-Kenner, aber für meinen Hausgebraucht hat alles bisher gut
funktioniert)



[...]

Ich schlage vor, bevor du den Upload mit PHP umsetzt, ihn ganz simpel
per FTP von der Kommandozeile zu testen. Dann hast du auch direkt
Fehlermeldungen, wenn etwas nicht klappt.

Danach kann man dir bestimmt helfen, deinen Code robust zu schreiben.

KP

Ähnliche fragen