ftp upload

LoMo

Erfahrenes Mitglied
Hi,

ich hab ein Problem beim hochladen einer Datei. Weiss jemand wie ich das machen könnte ? Habe es bisher so probiert:

PHP:
<?	
	session_start();
	
	if(isset($_POST['Bild'])) 
	{ 
		if($_FILES['Bild']['type'] != "image/gif" && $_FILES['Bild']['type'] != "image/pjpeg") 
		{ 
			echo '<br />&nbsp;<span>Das Bild muss eine gif oder jpeg Datei sein</span>'; 
$comzeichen = 1;
		} 
		
		if($_FILES['Bild']['size'] > "500000") 
		{ 
			echo '<br />&nbsp;<span>Das Bild darf nicht gr&otilde;sser als 5 MB sein</span>'; 
$comzeichen = 1;
		} 
	}
	
	if (comzeichen != 1)
	{
		if (isset($_POST['Bild']))
		{
			$ftp_id = ftp_connect("xxx");
			$ftp_login = ftp_login($ftp_id,"xxx","xxx");
			
			if($ftp_id || $ftp_login)
			{
				$remote_adress = "/www2/kunden/schnaeppchen_bilder/".$_SESSION['User_KDNR']."_".$_POST['Schnaeppchen']."";
				$upload = ftp_put($ftp_id,$remote_adress,$_POST['Bild'], FTP_BINARY); 
	
				if (!$upload) 
				{ 
						echo "Ftp upload war fehlerhaft!";
				}
				else 
				{
						echo "Datei $source_file auf $ftp_server als $destination_file geschrieben";
				}
			}
			ftp_close($ftp_id);
		}
	}
?>	

<form action="test.php" method="post">
<input name="Schnaeppchen" type="text">
<input name="Bild" type="file" class="Textfelder" id="Bild" size="50">
</form>

Ich hab des Tutorial mal angeschaut aber nicht wirklich durchgestiegen. Weiss jemand wo der Fehler liegt ?

mfg lomo
 
PHP:
<?php

	// zur sensibleren Fehlerbehandlung
	ini_set('display_errors', 1);
	ini_set('error_reporting', E_ALL);

	session_start();
    
	if( isset($_POST['Bild']) && $_FILES['Bild']['error'] !== UPLOAD_ERR_OK ) {
		$comzeichen = false;
		if( !(bool)preg_match('/^image\x2F(gif|p?jpeg|png)$/i', $_FILES['Bild']['type']) ) {
			echo '<p>Das Grafik muss eine GIF- oder JPEG-Datei sein!</p>';
			$comzeichen = true;
		}
		if( $_FILES['Bild']['size'] > 500000 ) {
			echo '<p>Das Grafik darf nicht größer als 5 MB sein!</p>';
			$comzeichen = true;
		}
	}

	if( $comzeichen === false ) {
		$ftp_id = ftp_connect('xxx');
		$ftp_login = ftp_login($ftp_id, 'xxx', 'xxx');
		if( $ftp_id && $ftp_login ) {
			$remote_adress = '/www2/kunden/schnaeppchen_bilder/'.$_SESSION['User_KDNR'].'_'.$_POST['Schnaeppchen'];
			$upload = ftp_put($ftp_id, $remote_adress, $_POST['Bild'], FTP_BINARY);
			if( !$upload ) {
				echo '<p>FTP-Upload war fehlerhaft!</p>';
			} else {
				echo 'Datei '.$source_file.' auf '.$ftp_server.' als '.$destination_file.' geschrieben';
			}
		}
		ftp_close($ftp_id);
	}

?>    
<form action="test.php" method="post">
	<input name="Schnaeppchen" type="text">
	<input name="Bild" type="file" class="Textfelder" id="Bild" size="50">
</form>
 
Zuletzt bearbeitet:
juhu funktioniert jetzt. Vielen Dank.

Wie kann ich eigentlich noch einbauen, dass er erst überprüft ob die Datei bereits vorhanden ist und falls ja eine Fehlermeldung ausgibt ?

mfg lomo
 
Vielen Dank. Funtzt mit file_exists().

ne letzte Frage hätte ich noch und zwar gibt es bei den file Feld irgend nen Grundwert(Value) oder so wo man festlegen könnte ?

mfg lomo
 
Ein Fehler hab ich noch gefunden. In den preg_match() muss irgendwas falsch sein, weil ich kann auch z.b. zip Dateien hochladen.

mfg lomo
 
Ich habe meinen vorherigen Beitrag entsprechend geändert, nun sollte es funktionieren.
 
Zurück