DATEIUPLOAD - Unvollständiges hochladen

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

DATEIUPLOAD - Unvollständiges hochladen

Postby Chris2805 » 28. April 2006 17:19

Hi,

benutze Xampp auf Windows XP.

Habe ein Script programmiert, was ganz einfach eine Datei hochlädt.

Allerdings bekomme ich die Meldung "Erfolgreich hochgeladen", aber die Datei exisitert im Ordner zwar, aber nur ein Bruchteil der Datei.

Wenn also eine Datei 200 KB groß ist, dann landen mal 8 kb, mal 20, oder mal 40 davon im Ordner, total unterschiedlich...

Liegt das am Script oder an Einstellungen bei FilezillaServer?

Vorsichtshalber meine Scriptstelle, die fürs Hochladen verantwortlich ist:



if(!copy($_FILES['bild']['tmp_name'],"$webServer$p_bild_name")){

echo "<br>Datei konnte nicht hochgeladen werden";
} ?>


Bitte um schnelle Hilfe, vielen Dank !!
Chris2805
 
Posts: 17
Joined: 26. April 2006 10:26

Postby Wiedmann » 28. April 2006 17:46

Ist denn deine Quelldatei ($_FILES['bild']['tmp_name']) noch korrekt?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Chris2805 » 28. April 2006 20:04

ich gehe davon aus, denn sonst würde er ja nicht nur einen teil des bildes hochladen oder?
Chris2805
 
Posts: 17
Joined: 26. April 2006 10:26

Postby Wiedmann » 28. April 2006 20:12

ich gehe davon aus

Aha. Dann geh ich davon aus, dass das Bild korrekt hochgeladen wird, dein Explorer aber einen Fehler hat und einfach falsche Dateigrössen anzeigt...

denn sonst würde er ja nicht nur einen teil des bildes hochladen oder?

Wieso? Dein HTTP-Upload kann doch schon fehlerhaft sein und die Datei "$_FILES['bild']['tmp_name'])" enthält schon nur einen Teil des Orginals. Die nicht komplette Tempdatei wird dann aus der Sicht von Copy komplett (so wie sie jetzt ist) komplett zum FTP-Server übertragen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Chris2805 » 29. April 2006 11:06

hm also habe mir mal vorm upload dann die Filegröße auslesen lassen


er zeigt mir korrekter weise nach bestätigen des buttons

29988

an, genausogroß ist auch das File.

hochgeladen wurden dann aber nur 12000 , das sind ca 41 % des Files.

Eine zu geringe beschränkung der filegröße beim Upload habe ich nicht, habe 6 MB als zulassung testweise eingetragen, damit es daran nicht liegen kann

Bin ratlos :(
Chris2805
 
Posts: 17
Joined: 26. April 2006 10:26

Postby Chris2805 » 29. April 2006 11:50

hm

naja ich hoffe einfach mal das es auf dem webserver dann laufen wird...^^

liegt bestimmt ans cheiss windoof xp das das nit richtig funzt
Chris2805
 
Posts: 17
Joined: 26. April 2006 10:26

Postby Wiedmann » 29. April 2006 11:51

er zeigt mir korrekter weise nach bestätigen des buttons "29988" an, genausogroß ist auch das File.

Muss nochmal fragen. So gross ist das File vor dem Upload zum Webserver auf dem Client, oder so gross ist nach dem Upload zum Webserver das Tempfile?

Mit was hast du die Dateigrösse des Tempfiles ermittelt?

hochgeladen wurden dann aber nur 12000 , das sind ca 41 % des Files.

Die Datei die zum FTP-Server (korrupt) kopiert wird, ist auch wirklich das Tempfile? Hast du mal beide im Editor geöffnet?
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Chris2805 » 29. April 2006 14:23

hm also habe nach abschicken des formulars die dateigrösse ermittelt, allerdings noch VOR der stelle wo es mit copy() kopiert wird

also mit

$_FILE['bild']['size']


dann paar zeilen später kommt

der copybefehl erst


zur übersicht mal das script, am ende de scripts fehlen eigentlich nur das abfangen der fehlermeldungen...das habe ich mal bewusst weggelassen, ist wohl nicht hier themenrelevant



<?php
$headline = $_POST['headline'];
$text = $_POST['text'];
$uid = $_SESSION['uid'];
$datum = date("Y-m-d H:i:s");

$p_bild_name=$_FILES['bild']['name'];
$p_bild_size=$_FILES['bild']['size'];
$p_bild_type=$_FILES['bild']['type'];

echo $p_bild_size;

$maxfilesize=6000000;
$filetypes=array("image/jpeg","jpg","jpeg");

if (!empty($p_bild_name)){

$webServer="ftp://bclub69:clubbing@127.0.0.1/website/news/uploads/";

if($p_bild_name!=""){

$endung=substr($p_bild_name,(strrpos($p_bild_name,".")+1),3);

if(in_array($p_bild_type,$filetypes)){

if($p_bild_size<=$maxfilesize){

if (!copy($_FILES['bild']['tmp_name'],"$webServer$p_bild_name")){

echo "<br>Datei konnte nicht hochgeladen werden";
} ?>



vielleicht hilft das ja

..

im form mailer steht

<input type="file" name="bild" class="newsFile">



der form tag sieht so aus

<form enctype="multipart/form-data" method="POST" action="admin.php?action=newsPutIn">



hoffe das hilft etwas weiter?!
Chris2805
 
Posts: 17
Joined: 26. April 2006 10:26

Postby Wiedmann » 29. April 2006 15:57

hm also habe nach abschicken des formulars die dateigrösse ermittelt,
Code: Select all
echo $p_bild_size;

Naja, du lässt dir anzeigen, was der Browser sagt wieviel er schicken will oder PHP meint beim Upload erhalten zu heben.... Hier meinte ich eher was wie:
Code: Select all
echo filesize($_FILES['bild']['tmp_name']);

Was dann tatsächlich nochmal die Datei auf der Platte testet.

allerdings noch VOR der stelle wo es mit copy() kopiert wird

Logisch, nach dem copy() ändert sich ja die Dateigrösse des Tempfiles auf dem Webserver nciht mehr ;-)

BTW noch 2 Sachen:
Code: Select all
$endung=substr($p_bild_name,(strrpos($p_bild_name,".")+1),3);

Geht einfacher mit:
Code: Select all
$endung = pathinfo($p_bild_name, PATHINFO_EXTENSION);

Vor allem passt es dann auch, wenn eine Datei mal keine Endung hat ;-)

Code: Select all
if (!copy($_FILES['bild']['tmp_name'],"$webServer$p_bild_name")){

Um Variablen Quotes aussen herum machen ist ziemlich sinnfrei... Besser hier:
Code: Select all
if (!copy($_FILES['bild']['tmp_name'], $webServer.$p_bild_name)) {



Da fällt mir noch ein:
Ich hoffe du löscht zwischen den Tests die Datei auf dem FTP-Server? IMHO überschreibt copy() so bei dem FTP-Wrapper keine vorhandenen Dateien.

Zu PHP und der Verbindung zum FTP-Server fällt mir sonst gerade nichts mehr ein. Wenn wirklich der Upload vom Client zum Webserver schon fehlschlägt, könntest du mal die Apache-Einstellung "EnableSendfile" ändern.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 12 guests