PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiupload


varos
30.03.2008, 14:26:57
Hay..
Versuche gerade zwei verschidene Dateien hochzu laden irgend wie klappt es nicht kann mir jemand helfen:

mein codesalat:


<tr>
<td class="tdcont">Bild auswählen</td>
<td class="tdcont"><input class="fc" type="file" name="datei[]"></td>
</tr>
<tr>
<td class="tdcont">PDF auswählen</td>
<td class="tdcont"><input class="fc" type="file" name="datei[]"></td>
</tr>


function upload() {

// Array mit erlaubten Dateiendungen
$arr_erlaube_dateityp = array(gif,jpg,jpeg,pdf,png);

$dateiname = $_FILES['datei']['name'][0];
$dateiname = $_FILES['datei']['name'][1];
// User ID
$user_id = $_POST['user_id'];
$user_id = preg_replace ("/[^0-9]/", "", $user_id);

if ($dateiname != '') {
$dateiname = preg_replace ("/[^0-9a-zA-Z\.]/", "_", $dateiname);
}
// Dateiendung ermitteln
$punkt = strrpos($dateiname, '.');
$laenge = strlen($dateiname);
$endung = strtolower(substr($dateiname, -($laenge - $punkt - 1)));
$orginal = strtolower(substr($dateiname, 0, -($laenge - $punkt)));



// Fehlerbehandlung
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
$fehlermeldung = "";
$fehler_gefunden = "";

// Name Check
$errormeldung = "<li>Es wurde keine Datei ausgewählt\n";
if (empty($dateiname)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Der gew&aumlhlte Dateityp ist nicht erlaubt\n";
if (!in_array($endung, $arr_erlaube_dateityp) && !empty($dateiname)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Die gewählte Datei ist zu groß, upload abgelehnt. Max 50 kb Dateigröße sind gestattet.\n";
if ($_FILES['datei']['size'][0]> (150 * 200024)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

// Wenn Fehler - dann aufruf der Fehlerausgabe...
if ($fehler_gefunden) {
$printfehler ="<ol>$fehlermeldung</ol>";
formular($printfehler);
exit;
}

// Zufaelligen Dateiname aus Orginalbildname und Zeit basteln
$bildzeit = time();
$rand_value = randomstring($bildzeit.$orginal);

$savename = $rand_value . ".$endung";

// In welches Verzeichnis soll die Datei
if ($endung == 'gif') {
$uploadverzeichnis = './../gif';
}
elseif ($endung == 'jpg' || $endung == 'jpeg') {
$uploadverzeichnis = './../jpg';
}
elseif ($endung == 'pdf' || $endung == 'pdf') {
$uploadverzeichnis = './../pdf';
}
elseif ($endung == 'png') {
$uploadverzeichnis = './../png';
}


// Keine Fehler, dann speichern
if ($printfehler == '') {
move_uploaded_file($_FILES['datei']['tmp_name'][0], $uploadverzeichnis.'/'.$savename);
@chmod ("$uploadverzeichnis/$savename", 0644);
}
if ($printfehler == '') {
move_uploaded_file($_FILES['datei']['tmp_name'][1], $uploadverzeichnis.'/'.$savename);
@chmod ("$uploadverzeichnis/$savename", 0644);
}

|Coding
30.03.2008, 20:14:54
Hi!

Dein Problem dürfte wohl hier liegen:

// ...

$arr_erlaube_dateityp = array(gif,jpg,jpeg,pdf,png);

// ...

Du hast da Konstanten in Verwendung die aber nicht deklariert sind. Sollte wohl eher so aussehen:

// ...

$arr_erlaube_dateityp = array ( 'gif', 'jpg', 'jpeg', 'pdf', 'png' );

// ...


Ein error_reporting ( E_ALL ); zu Beginn des Skripts, hätte das aufgezeigt.

varos
30.03.2008, 20:40:08
Nein das ist es nicht, es wird nur eine Datei hochgeladen aber nicht alle beide.

Kann es an der Zeileliegen


$dateiname = $_FILES['datei']['name'][0];
$dateiname = $_FILES['datei']['name'][1];


oder an der:


// Keine Fehler, dann speichern
if ($printfehler == '') {
move_uploaded_file($_FILES['datei']['tmp_name'][0], $uploadverzeichnis.'/'.$savename);

move_uploaded_file($_FILES['datei']['tmp_name'][1], $uploadverzeichnis.'/'.$savename);
@chmod ("$uploadverzeichnis/$savename", 0644);
}

|Coding
30.03.2008, 20:46:33
Das Problem ist, dass Du zwei Dateien unter dem selben $savename speicher möchtest.

varos
30.03.2008, 21:07:58
Ja das stimmt wenn ich die prüfung weglasse dann werden beide Dateien hochgeladet.
das problem ist aber wenn ich die prüfungen für Bild laufen lasse funct das nicht :
Dann lädt er nur das PDF hoch:
hier der Ssalat:

// Uploadfunktion
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
function upload() {

// Array mit erlaubten Dateiendungen
$arr_erlaube_dateityp = array('gif','jpg','jpeg','pdf','png');

$dateiname = $_FILES['datei']['name'];
$dateiname1 = $_FILES['datei1']['name'];
// User ID
$user_id = $_POST['user_id'];
$user_id = preg_replace ("/[^0-9]/", "", $user_id);

if ($dateiname != '') {
$dateiname = preg_replace ("/[^0-9a-zA-Z\.]/", "_", $dateiname);
}
if ($dateiname1 != '') {
$dateiname1 = preg_replace ("/[^0-9a-zA-Z\.]/", "_", $dateiname1);
}

// Dateiendung ermitteln
$punkt = strrpos($dateiname, '.');
$laenge = strlen($dateiname);
$endung = strtolower(substr($dateiname, -($laenge - $punkt - 1)));
$orginal = strtolower(substr($dateiname, 0, -($laenge - $punkt)));

// Dateiendung ermitteln
$punkt = strrpos($dateiname1, '.');
$laenge = strlen($dateiname1);
$endung = strtolower(substr($dateiname1, -($laenge - $punkt - 1)));
$orginal = strtolower(substr($dateiname1, 0, -($laenge - $punkt)));


// Fehlerbehandlung
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
$fehlermeldung = "";
$fehler_gefunden = "";

// Name Check
$errormeldung = "<li>Es wurde keine Datei ausgewählt\n";
if (empty($dateiname)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Der gew&aumlhlte Dateityp ist nicht erlaubt\n";
if (!in_array($endung, $arr_erlaube_dateityp) && !empty($dateiname)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Die gewählte Datei ist zu groß, upload abgelehnt. Max 50 kb Dateigröße sind gestattet.\n";
if ($_FILES['datei']['size']> (150 * 200024)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

// Name Check
$errormeldung = "<li>Es wurde keine pdf Datei ausgewählt\n";
if (empty($dateiname1)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

$errormeldung = "<li>Der gew&aumlhlte Dateityp ist nicht erlaubt\n";
if (!in_array($endung, $arr_erlaube_dateityp) && !empty($dateiname1)) {
$fehlermeldung = $fehlermeldung.$errormeldung ;
$fehler_gefunden = 1 ; }

// Wenn Fehler - dann aufruf der Fehlerausgabe...
if ($fehler_gefunden) {
$printfehler ="<ol>$fehlermeldung</ol>";
formular($printfehler);
exit;
}

// Zufaelligen Dateiname aus Orginalbildname und Zeit basteln
$bildzeit = time();
$rand_value = randomstring($bildzeit.$orginal);

$savename = $rand_value . ".$endung";


// In welches Verzeichnis soll die Datei
if ($endung == 'gif') {
$uploadverzeichnis = './../gif';
}
elseif ($endung == 'jpg' || $endung == 'jpeg') {
$uploadverzeichnis = './../jpg';
}
elseif ($endung == 'pdf' || $endung == 'pdf') {
$uploadverzeichnis = './../pdf';
}
elseif ($endung == 'png') {
$uploadverzeichnis = './../png';
}


// Keine Fehler, dann speichern
if ($printfehler == '') {
move_uploaded_file($_FILES['datei']['tmp_name'], $uploadverzeichnis.'/'.$savename);
@chmod ("$uploadverzeichnis/$savename", 0644);
move_uploaded_file($_FILES['datei1']['tmp_name'], $uploadverzeichnis.'/'.$dateiname1);
@chmod ("$uploadverzeichnis/$dateiname1", 0644);
}



// Dateigroesse und Bildabmessungen auslesen
$dateigroesse = filesize($uploadverzeichnis.'/'.$savename);
$picinfo = getimagesize($uploadverzeichnis.'/'.$savename);


if (($picinfo[0]>640) AND ($picinfo[1]>480)){
$image = $uploadverzeichnis.'/'.$savename;

$target = './../jpg/'.$savename;
///////////////////////////
$max_width = "640";
$quality = "90";
$src_img = imagecreatefromjpeg($image);
$picsize = getimagesize($image);

$src_width = $picsize[0];
$src_height = $picsize[1];
if($src_width > $max_width)
{
$convert = $max_width/$src_width;
$dest_width = $max_width;
$dest_height = ceil($src_height*$convert);
}
else
{
$dest_width = $src_width;
$dest_height = $src_height;
}

$dst_img = imagecreatetruecolor($dest_width,$dest_height);
imagecopyresampled($dst_img, $src_img, 0, 0, 0, 0, $dest_width, $dest_height, $src_width, $src_height);
imagejpeg($dst_img ,$target ,$quality);
}
///////////////

//text Beschreibung
$kategorie = $_POST['kategorie'];



// Daten speichern
$orginalname = mysql_real_escape_string($orginal);
MYSQL_QUERY("INSERT INTO material (picid, userid, pictime, picverz, picorg, pvorn, pend, picbytes, picwidth, picheight, kategorie) VALUES('', '$user_id', NOW(), '$uploadverzeichnis','$orginalname', '$rand_value', '$endung', '$dateigroesse', '$picinfo[0]', '$picinfo[1]','$kategorie')");
}


// Zufallszeichen fuer Dateiname
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
function randomstring($dateiname) {
$dateiname = strtolower(substr(md5(microtime()),0,20));
return $dateiname;
}

MYSQL_CLOSE();



Wenn ich es aber so mache dann lädt er beide dateien hoch


// Keine Fehler, dann speichern
if ($printfehler == '') {
move_uploaded_file($_FILES['datei']['tmp_name'], $uploadverzeichnis.'/'.$dateiname);
@chmod ("$uploadverzeichnis/$dateiname", 0644);
move_uploaded_file($_FILES['datei1']['tmp_name'], $uploadverzeichnis.'/'.$dateiname1);
@chmod ("$uploadverzeichnis/$dateiname1", 0644);
}

Domi
31.03.2008, 10:01:17
ansonsten kannst dir ja mal uber-upload anschauen, find ich nicht schlecht :)

http://selfphp.de/forum/showthread.php?t=18970