PhP Upload

Killer3d

Neuling
Thread Starter
Mitglied seit
05.05.2006
Beiträge
402
Hallo,

ich habe eine Index.php die sieht so aus:

PHP:
<div align="center"><form action="upload.php" method="post" enctype="multipart/form-data" name="upload">
<input type="file" name="file"><br>
<input type="submit" name="submit" value="Upload"></div><br>
<br>


<?PHP
$ftp_server = "xxx"; //FTP-Server 
$ftp_user_name = "xxx"; //Username 
$ftp_user_pass = "xxxx"; //Passwort 
$ftp_dir = "/dateiupload/"; //Ordner 
// Herstellen der Basis-Verbindung 
$conn_id = ftp_connect($ftp_server); 

// Einloggen mit Benutzername und Kennwort 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// Verbindung überprüfen 
if ((!$conn_id) || (!$login_result)) { 
        echo "Ftp-Verbindung nicht hergestellt!"; 
        echo "Verbindung mit $ftp_server als Benutzer $ftp_user_name nicht möglich"; 
        die; 
    } else { 
    } 
$files = ftp_nlist ($conn_id, $ftp_dir); 
foreach ($files as $list){ 
echo $list."<p/>"; 
} 

// Schließen des FTP-Streams 
ftp_quit($conn_id);   
?>

und dazu die upload.php

PHP:
<?php 

// Variabeln festlegen 
$max_byte_size = 1500000; 
$allowed_types = "(jpg|jpeg|gif|bmp|png|rar|zip|exe)"; 

// Formular wurde abgeschickt 
if($_POST["submit"] == "Upload") { 

// Wurde wirklich eine Datei hochgeladen? 
if(is_uploaded_file($_FILES["file"]["tmp_name"])) { 

// Gültige Endung? ($ = Am Ende des Dateinamens) (/i = Groß- Kleinschreibung nicht berücksichtigen) 
if(preg_match("/\." . $allowed_types . "$/i", $_FILES["file"]["name"])) { 

// Datei auch nicht zu groß 
if($_FILES["file"]["size"] <= $max_byte_size) { 

// Alles OK -> Datei kopieren 
if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) { 

echo "Datei erfolgreich hochgeladen!<br>"; 
echo "Name: " . $_FILES["file"]["name"] . "<br>"; 
echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>"; 
echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>"; 
echo "Link: <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a>"; 

} 
else { 

echo "Datei konnte nicht hochgeladen werden."; 

} 

} 
else { 

echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen."; 

} 

} 
else { 

echo "Die Datei Darf nicht hochgeladen werden. Bitte nur erlaubtes Hochladen."; 

} 

} 
else { 

echo "Keine Datei zum Hochladen angegeben."; 

} 

} 
else { 

echo "Bitte benutzen Sie das Upload Formular."; 

} 

?>

Mit der Indexphp wird ja die upload.php aufgerufen.

Und dateien aus dem ordner /dateiupload/ ausgelesen.

Das sieht so aus: http://dateiupload.trgr-clan.de

1. Frage: Wie Kann ich das so machen das er das was in dem
Ordner /dateiupload/ als link anzeigt ? und ohne den ordnername /dateiupload/ vorwegzuschreiben:

100_3357.JPG

2. Frage: Wie kann ich das so machen das wenn er die datei hochgeladen hat auch gleich umbenennt ? also von z.B. von 100_3357.JPG ind 100_3357-21545644.JPG (irgenteine nummer dahinter:d)

Wenn ihr mir das machen könntet wäre ich euch mega Dankbar

MfG Killer3d
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hi!

zu 1.
es sollte reichen wenn du in der index.php die Zeilen
PHP:
$files = ftp_nlist ($conn_id, $ftp_dir);  
foreach ($files as $list){  
echo $list."<p/>";  
}
durch
PHP:
$files = ftp_nlist ($conn_id, $ftp_dir);  
foreach ($files as $list){  
echo "<a href='".$ftp_dir.$list."' target='_blank'>".$list."</a><p/>";  
}
ersetzt.
Einfach einen Link auf deine Dateien setzen.


zu 2.
hier sollte es reichen wenn du
PHP:
if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"])) {  

echo "Datei erfolgreich hochgeladen!<br>";  
echo "Name: " . $_FILES["file"]["name"] . "<br>";  
echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>";  
echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>";  
echo "Link: <a href=\"" . $_FILES["file"]["name"] . "\">" . $_FILES["file"]["name"] . "</a>";  

}
durch
PHP:
if(copy($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]."_".$_FILES["file"]["tmp_name"])) {  

echo "Datei erfolgreich hochgeladen!<br>";  
echo "Name: " . $_FILES["file"]["name"]."_".$_FILES["file"]["tmp_name"] . "<br>";  
echo "Größe: " . $_FILES["file"]["size"] . " Byte<br>";  
echo "MIME-Type: " . $_FILES["file"]["type"] . "<br>";  
echo "Link: <a href=\"" . $_FILES["file"]["name"]."_".$_FILES["file"]["tmp_name"] . "\">" . $_FILES["file"]["name"]."_".$_FILES["file"]["tmp_name"] . "</a>";  

}
ersetzt.
Es wird einfach der von php intern generierte temporäre Name nach einem Unterstrich an deine Upload-Datei angehängt, dies sollte vorerst ausreichen, um deine Upload Dateien unter einem eindeutig-einzigartigem Dateinamen abzuspeichern.
konnte es leider nicht testen, aber probiers mal aus, sollte so funktionieren.

greets wario!
 
warum machst du eine dateiliste mittels ftp? das ist doch mehr als unperformant? benutzt doch einfach die php dir class... das geht auf jedenfall schneller als ftp
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh