php - > datei upload

Alles, was PHP betrifft, kann hier besprochen werden.

php - > datei upload

Postby docprogressive » 29. April 2005 15:35

moiN!

ich hab ma ne dringende frage: wie sicher jeder von euch hab ich so meine vordefinierten scripte, wieso auch immer alles neu schreiben...

mein problem is: ich hatte n fertiges datei upload script, das früher auch einwandfrei funktioniert hat.

seit kurzem hab ich wieder xampp installiert, was auch soweit einwandfrei läuft, nur irgendwie funktioniert das datei hochlachen nicht mehr....hat einer n plan, woran es liegen könnte ? muss man das in der httpd.conf erst aktivieren oder in der php.ini oder so ?


danke schonmal


grüß :)
docprogressive
 
Posts: 8
Joined: 05. September 2003 20:32

Postby Wiedmann » 29. April 2005 15:45

was auch soweit einwandfrei läuft, nur irgendwie funktioniert das datei hochlachen nicht mehr

Da es keine Fehlermeldung gibt, wirst du halt keine Datei für den Upload ausgewählt haben... Sorry, Glaskugel ist defekt.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby docprogressive » 03. May 2005 11:45

<form
action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post"
enctype="multipart/form-data">
<input type="file" name="probe" />
<input type="submit" value="Los!" />
</form>
<hr />
<?php
if (isset($_FILES['probe']) and ! $_FILES['probe']['size']) {
// Alternativ: and $_FILES['probe']['error']
move_uploaded_file($_FILES['probe']['tmp_name'], "./newfile.txt");
printf("Die Datei %s steht jetzt als " .
"newfile.txt zur Verfügung.<br />\n",
$_FILES['probe']['name']);
printf("Sie ist %u Bytes groß und vom Typ %s.<br />\n",
$_FILES['probe']['size'], $_FILES['probe']['type']);
}
?>


ok, da einer der codes, die ich ausprobiert hab...es funzt net und dateigröße is immer 0

wo könnt in apache oder php was falsch konfiguriert sein ?

gruß
docprogressive
 
Posts: 8
Joined: 05. September 2003 20:32

Postby Wiedmann » 03. May 2005 13:14

if (isset($_FILES['probe']) and ! $_FILES['probe']['size']) {

Du meintest hier wohl eher sowas?
Code: Select all
if (!empty($_FILES['probe']['size'])) {


Jetzt ist nur noch zu befürchten, dass die Datei nicht dort landet wo du sie haben willst...
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby docprogressive » 03. May 2005 13:32

mein prob is, dass das da oben eins der scripte is, die ich dann ausm web gezogen hab (nachdem ich mein eigenes endgültig totally verhunzt hatte).

hab das jetzt ma so geändert, wie dus geschrieben hast. jetzt bekomm ich gar keine meldung mehr...

du meintest, das ding landet nich da wo ichs haben will......was muss ich ändern ?
docprogressive
 
Posts: 8
Joined: 05. September 2003 20:32

Postby Wiedmann » 03. May 2005 13:47

hab das jetzt ma so geändert, wie dus geschrieben hast. jetzt bekomm ich gar keine meldung mehr...

Dann scheinst du ein anderes Problem zu haben. Obiges Script, nur diese eine Zeile ausgetauscht, läuft ohne Probleme.

Aber kannst ja mal dein error_reporting anders einstellen. Vielleicht bringt das Licht ins Dunkle:
ini_set('error_reporting', E_ALL);

Falls es ein Problem beim Upload gibt, erfährst du das in:
echo $_FILES['probe']['error'];

kannst auch mal dieses machen um zu sehen was ankommt:
print_r($_FILES);

du meintest, das ding landet nich da wo ichs haben will......was muss ich ändern ?

Ich denke mal das Ziel wo die Datei hin soll, oder nicht? Allerdings kann es ja auch sein das du die Datei dort haben willst.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby docprogressive » 03. May 2005 15:57

aaaalso:

ich hab das gefühl, das liegt alles an der dateigröße und raff langsam so nix mehr...

hab das script jetzt wie folgt laufen


Code: Select all
<form
action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post"
enctype="multipart/form-data">
<input type="file" name="probe" />
<input type="submit" value="Los!" />
</form>
<hr />
<?php
if (!empty($_FILES['probe']['error'])) {
   // Alternativ: and $_FILES['probe']['size']
   move_uploaded_file($_FILES['probe']['tmp_name'], "./newfile.txt");
   printf("Die Datei %s steht jetzt als " ."newfile.txt zur Verfügung.<br />\n",
   $_FILES['probe']['name']);
   printf("Sie ist %u Bytes groß und vom Typ %s.<br />\n",
   $_FILES['probe']['size'], $_FILES['probe']['type']);
   echo $_FILES['probe']['error'];
   print_r($_FILES);
}
?>


hab als das size bei der "if" abfrage gegen error getauscht und bekomme jetzt folgende ausgabe (als da noch "size" stand, kam leerer bildschirm):



Die Datei 04-Tunnel1-10-d-xl.jpg steht jetzt als newfile.txt zur Verfügung.
Sie ist 0 Bytes groß und vom Typ .
6Array ( [probe] => Array ( [name] => 04-Tunnel1-10-d-xl.jpg [type] => [tmp_name] => [error] => 6 [size] => 0 ) )



was kanns sein ?

das ini_set('error_reporting', E_ALL); muss ich einfach ins script reinschreiben oder wie wo was ?

danke schonma nochma :)
docprogressive
 
Posts: 8
Joined: 05. September 2003 20:32

Postby Wiedmann » 03. May 2005 16:25

Kann es sein, dass du einfach mal im Manual nachschauen solltest was die einzelnen Befehle machen? in dem Fall natürlich auch wie man einen Upload macht und Fehler erkennt...

if (!empty($_FILES['probe']['error'])) {

Mit "$_FILES['probe']['error']" funktioniert "!empty()" nicht.

Wenigstens ist so dann die Zeile "echo $_FILES['probe']['error'];" augeführt worden: 6
oder "print_r($_FILES);": [error] => 6

Ein Blick ins Manual sagt uns:
PHP-Manual wrote:Value: 6; Missing a temporary folder.

--> du solltest in der php.ini das "upload_tmp_dir" korrekt konfigurieren (und/oder das allgemeine TMP-Dir).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby docprogressive » 03. May 2005 17:11

ok, ich hab mir xampp runtergeladen, damit ich den sch... nich konfiguriern muss...


mein upload temp dir is:

upload_tmp_dir = ".;c:\apachefriends\xampp\tmp"


was müsste ich da ändern? oder was is das andere temp dir ?
docprogressive
 
Posts: 8
Joined: 05. September 2003 20:32

Postby Wiedmann » 03. May 2005 17:47

Code: Select all
upload_tmp_dir = ".;c:\apachefriends\xampp\tmp"

was müsste ich da ändern?

Yup, die Voreinstellung vom XAMPP ist Quark. Richtig wäre:
Code: Select all
upload_tmp_dir = "c:\apachefriends\xampp\tmp"


oder was is das andere temp dir ?

Das ist das Temp-Dir vom Betriebssystem. Nachdem das, welches vom XAMPP konfigurierte ist, nicht geht, wird hier normal das vom System genommen. Allerdings scheint dieses bei dir auch nicht konfiguriert und/oder existent zu sein (, oder der Apache hat darin keine Rechte).
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby docprogressive » 04. May 2005 08:09

AAAAAAAAAAAAAAAAAAAAAH und schon loooofts :) danke
docprogressive
 
Posts: 8
Joined: 05. September 2003 20:32


Return to PHP

Who is online

Users browsing this forum: No registered users and 3 guests