| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

19-07-2007, 21:27
|
|
Mimmi
Junior Member
|
|
Registriert seit: Aug 2005
Beiträge: 56
|
|
Fehler bei Bild Upload
Hallo,
habe mir ein Script zusammengebastelt, mit dem ich eine Bilddatei auf den Server laden und diese zusätzlich als Thumbnail speichern kann. Auf meinem Rechner (Mac OSX + XAMPP) funktioniert alles einwandfrei. Wenn ich das ganze jedoch auf meinem Shared Server von net-housting.de ausprobiere, erscheint folgender Fehler und ich kann keine Bilddatei in den entsprechenden Ordnern vorfinden:
Zitat:
Warning: getimagesize() [function.getimagesize]:
Unable to access ../Fotos/test.png in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 5
Warning: getimagesize(../Fotos/test.png) [function.getimagesize]:
failed to open stream: No such file or directory in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 5
Warning: Division by zero in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 6
Warning: imagecreate() [function.imagecreate]:
Invalid image dimensions in /srv/www/htdocs/web247/html/schubert/admin/upload.php on line 6
Warning: imagecopyresized(): supplied argument is not a valid Image resource in
/srv/www/htdocs/web247/html/schubert/admin/upload.php on line 6
|
phpinfo() sagt mir über GD folgendes, sollte eigentlich passen:
Hier der Code:
PHP-Code:
$dateiname = $HTTP_POST_FILES['datei']['name'];
copy($datei, "../Fotos/$dateiname");
$groesse=getimagesize("../Fotos/$dateiname");
$breite=$groesse[0];
$hoehe=$groesse[1];
$typ=$groesse[2];
$hoehe2=$hoehe*96/$breite;
$image1 = imagecreate(96,$hoehe2);
switch ($typ)
{
case 1:
$image = imagecreatefromgif("../Fotos/$dateiname");
break;
case 2:
$image = imagecreatefromjpeg("../Fotos/$dateiname");
break;
case 3:
$image = imagecreatefrompng("../Fotos/$dateiname");
break;
case 4:
$image = imagecreatefromwbmp("../Fotos/$dateiname");
break;
default: $gestorben="ja";
}
imagecopyresized($image1, $image, 0,0, 0,0,96,$hoehe2,$breite,$hoehe);
switch ($typ)
{
case 1:
imagegif($image1,"../Fotos/Thumbs/$dateiname");
break;
case 2:
imagejpeg($image1,"../Fotos/Thumbs/$dateiname",50);
break;
case 3:
imagepng($image1,"../Fotos/Thumbs/$dateiname");
break;
case 4:
imagewbmp($image1,"../Fotos/Thumbs/$dateiname");
break;
default: $gestorben="ja";
}
Ich denke, das liegt irgendwie an CHMOD, habe aber leider keinen blassen Schimmer, was man dagegen unternehmen könnte und bitte um Eure Hilfe.
Danke vielmals!
|

19-07-2007, 22:00
|
|
kuddeldaddeldu
Registrierter Benutzer
|
|
Registriert seit: Sep 2006
Beiträge: 437
|
|
Zitat:
|
Ich denke, das liegt irgendwie an CHMOD...
|
Klingt logisch, wo Du das doch gar nicht benutzt...
Dateiuploads verschiebt man mit move_uploaded_file.
Und bevor man wild herumrät, prüft man eine Datei erstmal auf Existenz.
|

19-07-2007, 22:05
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
$dateiname != $datei, auch bei dir lokal!
Übrigens solltest du move_uploaded_file() verwenden.
|

19-07-2007, 22:32
|
|
Mimmi
Junior Member
|
|
Registriert seit: Aug 2005
Beiträge: 56
|
|
Hi,
sorry, ich bin Anfänger, deshalb die Sache mit CHMOD und "Rumraterei"...
Habe move_uploaded_file() mal versucht einzubauen, anstatt copy():
PHP-Code:
$uploaddir = "../Fotos/$dateiname";
move_uploaded_file($_FILES['datei']['tmp_name'], $uploaddir . $_FILES['datei']['name']);
Am Fehler ändert das jedoch leider nichts.
Was ich nun nicht verstanden habe ist, ob Ihr längst wisst wo der Fehler liegt, ich Euch aber nerve?? (vorallem @kuddeldaddeldu)
Vielen Dank Euch in jedem Fall!
|

19-07-2007, 22:50
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
Bist du SICHER, dass du einen ../ Pfad verwenden willst/hast ?
PHP-Code:
//besser einen absoluten Pfad
$_SERVER['DOCUMENT_ROOT'].'/pfad/zu/Fotos/'.$_FILES['datei']['name'];
Ist so der Fehler weg ?
|

19-07-2007, 22:51
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ich wollte sagen, dass ich nicht weiß welchen Wert $datei hat, vermutlich gar keinen, weil du eigentlich $dateiname schreiben wolltest, wobei das auch falsch wäre.
Dein neuer Versuch ist auch nicht das Gelbe vom Ei. Schau dir mal an, wohin eine hochgeladene Datei namens 'file.ext' verschoben werden würde - nach "../Fotos/$dateinamefile.ext".
Bau doch einfach das Beispiel aus dem Manual nach. Und erst wenn du die Datei sauber hochladen, verschieben und anschließend ihre Existenz am Zielort überprüfen kannst, manipulierst du den Inhalt (das Bild).
|

20-07-2007, 14:24
|
|
Mimmi
Junior Member
|
|
Registriert seit: Aug 2005
Beiträge: 56
|
|
Hi,
vieeelen Dank Euch beiden, jetzt hats geklappt!
Habe den Pfad nun angegeben wie im Doku-Beispiel, das war's tatsächlich. Die Bildqualität war dann allerdings erstmal grausam, bis ich imagecreate() durch imagecreatetruecolor() ersetzt habe.
Falls es irgendjemanden interessieren sollte, hier mein neuer Code:
PHP-Code:
<?php
include 'session.php';
$dateiname = $_FILES['datei']['name'];
$uploaddir = '/srv/www/htdocs/web247/html/schubert/Fotos/';
$uploadfile = $uploaddir . basename($_FILES['datei']['name']);
if (move_uploaded_file($_FILES['datei']['tmp_name'], $uploadfile)) {
echo "Das Bild wurde hochgeladen und abgespeichert. Es heißt <br>".$dateiname."<br>Diesen Namen bitte beim Eintragen des entsprechenden Produkts eingeben.";
} else {
echo "Upload nicht erfolgreich.";
}
$groesse=getimagesize('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
$breite=$groesse[0];
$hoehe=$groesse[1];
$typ=$groesse[2];
$hoehe2=$hoehe*96/$breite;
$image1 = imagecreatetruecolor(96,$hoehe2);
switch ($typ)
{
case 1:
$image = imagecreatefromgif('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
break;
case 2:
$image = imagecreatefromjpeg('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
break;
case 3:
$image = imagecreatefrompng('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
break;
case 4:
$image = imagecreatefromwbmp('/srv/www/htdocs/web247/html/schubert/Fotos/'.$dateiname);
break;
default: $gestorben="ja";
}
imagecopyresized($image1, $image, 0,0, 0,0,96,$hoehe2,$breite,$hoehe);
switch ($typ)
{
case 1:
imagegif($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname);
break;
case 2:
imagejpeg($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname,100);
break;
case 3:
imagepng($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname);
break;
case 4:
imagewbmp($image1,'/srv/www/htdocs/web247/html/schubert/Fotos/Thumbs/'.$dateiname);
break;
default: $gestorben="ja";
}
?>
|

20-07-2007, 14:38
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Bitte Regeln lesen, und Code umbrechen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|