php fileupload konfiguration

Alles, was PHP betrifft, kann hier besprochen werden.

php fileupload konfiguration

Postby mkp » 02. September 2004 13:15

seid gegrüßt,

ich habe einen server im Netz, wo ich selbst websites hoste, und nun beschäftige ich mich seit längerer Zeit auch mit php und mysql.
Mittlerweile bin ich, nachdem ich einiges gecodet habe bei Fileuploads angekommen und wollte mein php dazu konfigurieren. habe demnach in der php.ini 'file upload' auf 'on' gestellt und ein Verzeichnis innerhalb meines 'wwwroot' angegeben als 'temp_verz' .

Wenn ich mir über phpinfo() die Konfiguration anschaue, steht bei file upload auch 'on', nur mein 'tmp Verzeichnis' wird nicht angezeigt. Muss ich noch mehr einstellen???
Oder woran kann das liegen? :?:

Als OS setze ich Windows 2003 Server mit IIS 6.0 ein

Thx a lot
mkp
 
Posts: 7
Joined: 02. September 2004 12:37

Postby mkp » 09. September 2004 10:41

hallo,

so habe jetzt selbst mal ein bischen rumgefummelt...

aber irgendwas klappt da noch nicht richtig,
bekomme nach dem Senden folgende Fehlermeldung:

Code: Select all
Array ( [tabelle] => 01-09-04 [Submit] => hochladen ) Array ( [pic] => Array ( [name] => 640.jpg [type] => image/pjpeg [tmp_name] => C:\Inetpub\wwwroot\phpupload\php168.tmp [error] => 0 [size] => 14064 ) [thumb] => Array ( [name] => 80.jpg [type] => image/pjpeg [tmp_name] => C:\Inetpub\wwwroot\phpupload\php169.tmp [error] => 0 [size] => 1337 ) ) Fehler


Verzecihnis hat volle Schreibrechte...
mkp
 
Posts: 7
Joined: 02. September 2004 12:37

Postby mkp » 15. September 2004 14:01

hat den keiner ne Idee, was an der Konfiguration falsch sien könnte...
oder die Ursache für die Fehlermedlung ist ?
mkp
 
Posts: 7
Joined: 02. September 2004 12:37

Postby CubaLibre » 15. September 2004 14:48

Nö, man müßte mal das Script sehen.

Das muß mit nicht zwingend an der php.ini liegen.
CubaLibre
 
Posts: 25
Joined: 18. January 2004 01:35
Location: Weilburg

Postby mkp » 16. September 2004 14:25

ja gutte,

dachte nur das es an der ini liegt... auf einem anderem rechner läuft es!
Aber hier mal das script:
Code: Select all
<?php
include ("../sql/connect.inc.php");

print_r ($HTTP_POST_VARS);
print_r ($_FILES);

// variablen für Dateiupload
$datei = $_FILES["pic"]; // datei in empfang nehmen
$datei_t = $_FILES["thumb"];
$tab   = $HTTP_POST_VARS["tabelle"];
$dir = "../grit.phexmedia.com/gallery/pics/"; // directory wohin kopieren
$dir_t = "../grit.phexmedia.com/gallery/thumbs/";
$kb = 80; // max. dateigröße
$quality = 90; // max. qualität

// wenn übergebene Datei vom Typ "image/pjpeg" ist
if($datei["type"]=="image/pjpeg"){
   // und kleiner als angegebene dateigröße ist
   if($datei["size"]<1024*$kb){
      // kopiere sie in den angegeben ordner
      copy($datei["tmp_name"], $dir.$datei["name"]) or die("Fehler");
      // andernfalls
      }else{
      echo "Datei ist zu gross<br>";
      for($i=$quality; $i>0; $i-=5){
         // erstelle ein neues bild
         $bild = imagecreatefromjpeg($datei["tmp_name"]);
         // vom typ image/jpeg
         imagejpeg($bild, $dir.$datei["name"], $i);
         // wenn die dateigröße immer noch zu groß ist
         if(filesize($dir.$datei["name"])<1024*kb){
            break;
         }
      }
      print_r(filesize($dir.$datei["name"]));
   }
   echo "Datei wurde upgeloaded mit Qualit&auml;t $i";
}else{
   echo "Das falsches Dateiformat";
}
// dateinamen für den eintrag in die Datenbank in variablen speichern
$dateiname = "pics/".$datei["name"];

// wenn übergebene Datei vom Typ "image/pjpeg" ist
if($datei_t["type"]=="image/pjpeg"){
   // und kleiner als angegebene dateigröße ist
   if($datei_t["size"]<1024*$kb){
      // kopiere sie in den angegeben ordner
      copy($datei_t["tmp_name"], $dir_t.$datei_t["name"]) or die("Fehler");
      // andernfalls
      }else{
      echo "Datei ist zu gross<br>";
      for($i=$quality; $i>0; $i-=5){
         // erstelle ein neues bild
         $bild_t = imagecreatefromjpeg($datei_t["tmp_name"]);
         // vom typ image/jpeg
         imagejpeg($bild_t, $dir_t.$datei_t["name"], $i);
         // wenn die dateigröße immer noch zu groß ist
         if(filesize($dir_t.$datei_t["name"])<1024*kb){
            break;
         }
      }
      print_r(filesize($dir_t.$datei_t["name"]));
   }
   echo "Datei wurde upgeloaded mit Qualit&auml;t $i";
}else{
   echo "Das falsches Dateiformat";
}
// dateinamen für den eintrag in die Datenbank in variablen speichern
$dateiname_t = "thumbs/".$datei_t["name"];
//////////////////////////////////////////////////////
// Anfrage um die Werte in Datenbank speichern

$sql = "INSERT INTO $tab (id, thumb, pic ) VALUES ('', '$dateiname_t', '$dateiname')";

// anfrage senden
mysql_query ( $sql, $connect );

// verbindung beenden
mysql_close($connect);

//weiterleitung
//header("Location:pic_upl.php");

?>
mkp
 
Posts: 7
Joined: 02. September 2004 12:37

Postby Wiedmann » 16. September 2004 14:53

Gut,

es mag eine gute Idee beim Programmieren zu sein, sich die orginalen PHP-Fehlermeldungen anzeigen zu lassen("error_reporting = E_ALL" und "display_errors = On")...

copy($datei["tmp_name"], $dir.$datei["name"]) or die("Fehler");

Hier solltest du eher die passende Funktion dafür nehemen:
Code: Select all
move_uploaded_file($datei['tmp_name'], $dir.$datei['name']) or die('Fehler');

Enthalten die Arrays an dieser Stelle die von dir gewünschten Werte?
echo $datei['tmp_name'];
echo $dir.$datei['name'];

"$dir" ist ja ein relativer Pfad bei dir. Befindet sich PHP überhaupt im richtigen Verzeichnis, damit dieser Pfad passt?
echo getcwd();

$tab = $HTTP_POST_VARS["tabelle"];

anstatt $HTTP_POST_VARS solltest du an solchen Stellen das "$_POST"-Array nehmen.
Code: Select all
print_r ($_POST);
$tab = $_POST['tabelle'];
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mkp » 19. September 2004 14:38

hallo,

sehr komisch, habe das error handling eingeschaltet und jetzt geht es,
aber es werden keine temporären namen erstellt...
muss ich das auch noch irgendwo konfigurieren???

Habe mir mal alles ausgeben lassen..
Code: Select all
Array ( [tabelle] => 080904 [Submit] => hochladen ) Array ( [pic] => Array ( [name] => aa640.jpg [type] => image/pjpeg [tmp_name] => C:\Inetpub\wwwroot\phpupload\php5D.tmp [error] => 0 [size] => 2106 ) [thumb] => Array ( [name] => aa80.jpg [type] => image/pjpeg [tmp_name] => C:\Inetpub\wwwroot\phpupload\php5E.tmp [error] => 0 [size] => 416 ) )


Vielen Dank schon mal ...
mkp
 
Posts: 7
Joined: 02. September 2004 12:37

Postby Wiedmann » 19. September 2004 15:07

aber es werden keine temporären namen erstellt...

Und was ist das:
Array ( [tabelle] => 080904 [Submit] => hochladen ) Array ( [pic] => Array ( [name] => aa640.jpg [type] => image/pjpeg [tmp_name] => C:\Inetpub\wwwroot\phpupload\php5D.tmp [error] => 0 [size] => 2106 ) [thumb] => Array ( [name] => aa80.jpg [type] => image/pjpeg [tmp_name] => C:\Inetpub\wwwroot\phpupload\php5E.tmp [error] => 0 [size] => 416 ) )

:?:
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mkp » 20. September 2004 09:29

hmm,
das habe ich ja gelesen, dachte aber weil da " error " hintersteht,
konnten die nicht erstellt werden ?!

Ich raffe es nicht ganz, aber zumindest funktioniert der Fileupload jetzt...

Danke Dir... hat mir supi geholfen. :)
mkp
 
Posts: 7
Joined: 02. September 2004 12:37

Postby Wiedmann » 20. September 2004 09:54

"tmp_name" ist ja ein Key das Array's:
$_FILES['pic']['tmp_name'] == C:\Inetpub\wwwroot\phpupload\php5D.tmp

"error" ist genau das selbe:
$_FILES['pic']['error'] == 0

In dem Fall ist also kein Fehler aufgetreten ("0").
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby mkp » 20. September 2004 10:26

okay, alles klar...

jetzt isses verständlich ... :)

thx for help
mkp
 
Posts: 7
Joined: 02. September 2004 12:37


Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests