Upload-Codeschnipsel: Mutationsproblem

LN5

Mitglied
Tach Leute

Vor einiger Zeit habe ich ein Upload-Script gesucht und gefunden und würde es jetzt gerne einsetzen. Leider entspricht es noch nicht ganz meinen Ansprüchen. Hier zuerst mal das Script:

PHP:
if (isset($sendfiles)){
	$numsendfiles = count($HTTP_POST_FILES);
	foreach($HTTP_POST_FILES as $strFieldName => $arrPostFiles){
    if ($arrPostFiles['size'] > $b_min && $arrPostFiles['size'] < $b_max){
			$strFileName = $arrPostFiles['name'];
			$strFileTemp = $arrPostFiles['tmp_name'];
			@copy ($strFileTemp, "$pfad/$strFileName");
			echo "<br><span class=\"grossschrift\"><font color=green><b>Datei <u>$strFileName</u> erfolgreich  hochgeladen.</b></font></span><br>";
	   		}
	   		else{
	   		echo "<br><span class=\"grossschrift\"><font color=red><b>Die Datei muss grösser als $b_min Bytes und kleiner als $mb MB sein!</b></font></span><br>";}
	}

Wie das Ganze funktioniert, ist nachvollziehbar, aber jegliche Versuche das Script meinen Wünschen anzupassen, sind gescheitert.

Das Script, so wie es hier steht, macht nichts anderes, als die ausgewählte Datei ins oben definierte Verzeichnis zu Uploaden. Ich möchte jetzt aber noch Funktionen einbauen.

  1. Das Bild soll skaliert werden: max. Breite 150 px
  2. Das Bild soll umbenannt werden. Es soll die Mitglieder-ID als Name erhalten. Wie ich die Mitglieder-ID ausgeben ist keine Sache, es geht wirklich nur ums Umbenennen.

Bin gespannt ob ihr eine Idee habt.

Danke im Voraus.
 
Also erstmal an paar Kritikpunkte am Script an sich:
  • $HTTP_POST_FILES sollte durch $_FILES ersetzt werden
  • copy() sollte move_uploaded_file() weichen
  • Fehlerunterdrueckung mittels @ ist meist boese. Die meisten Fehler kann man von vornherien vermeiden.
Nun zum eigentlichen Problem: Um die UserID als Dateinamen zu bekommen musst Du diese in $strFileName packen oder eben dieses durch die UserID ersetzen.

Was die Skalierung angeht empfehle ich Dir mal ein wenig rumzuschauen, die letzten Tage gab es dazu ein paar Threads wo Du sicher hilfreiche Informationen finden kannst.
 
Hallo Dennis

Danke für die rasche Antwort. Kannst du mir aber die Änderungstipps noch begründen bzw. erklären. Das mit der Fehlerunterdrückung ist klar, aber die anderen zwei?
 
Aja, noch was. Weisst du, wie ich diese Datei dann wieder löschen kann? Wie lautet die Funktion hierfür?
 
$HTTP_POST_FILES ist, genau wie $HTTP_POST_VARS, $HTTP_SESSION_VARS, etc., veraltet und wird wohl ueber kurz oder lang rausfliegen. Zumindest in PHP5 koennen diese langen Array-Namen auch per php.ini deaktiviert werden.
Mit den neuen, kurzen Namen, wie z.B. $_FILES, $_POST, $_SESSION, etc., bist Du dann auf der sicheren Seite.

move_uploaded_file() verschiebt die Datei prueft vor dem Verschieben ob es sich auch wirklich um eine hochgeladene Datei handelt.

Der Befehl zum Loeschen einer Datei ist unlink().

Nachtrag: Und nutze um Deinen Beitraegen noch was hinzuzufuegen bitte den Aendern-Button und erstelle nicht gleich fuer sowas einen neuen Post.
 
Zurück