ERLEDIGT
NEIN
NEIN
ANTWORTEN
15
15
ZUGRIFFE
1481
1481
EMPFEHLEN
-
13.06.05 11:22 #1
So das mit dem Bilder hochladen habe ich soweit hinbekommen, nun mal weiter im Takt.
Ich habe ja nun ein Formular, wo ich den Benutzer die Datei aussuchen lasse. Wenn er die Datei ausgewählt hat, aber noch nicht hochladen geklixt hat, wie kann ich es hinbekommen, das dem Benutzer trotzdem schon eine kleine Vorschau gezeigt wird.
In der Vorschau sollte das Bild jpeg/gif (beschränke mich vielleicht auch auf jpeg, mal schauen) auf das Format 100pxB x 200pxH zugeschnitten werden, aber die originalen Seitenverhältnisse beibehalten werden. Ist das Bild des Users 35x100 dann soll es automatisch auf 70x200 zugeschnitten werden. Oder halt wenn es größer ist ein wenig geschrumpft werden.
Hier mein Codeschnipsel dazu
Tja nun noch dem Bild die Werte zuweisen, aber wie mache ich das am dümmsten?PHP-Code:$zielbreite = 100;
$zielhoehe = 200;
$dimensionen = GetImageSize($tempnama);
$breite = $dimensionen[0];
$hoehe = $dimensionen[1];
if ($breite>$hoehe) // bei Querformat
{
$faktor = $zielbreite/$breite; // Faktor für Höhe berechnen
$breite = $zielbreite;
$hoehe = $hoehe * $faktor;
}
else //bei Höhe größer Breite also Hochformat
{
$faktor = $zielhoehe/$hoehe; // Faktor für Höhe berechnen
$hoehe = $zielhoehe;
$breite = $breite * $faktor;
}
// nun müssen die Werte dem Bild zugewiesen werden
Das Bild soll dann auch mit diesen Werten gespeichert werden!
Ach was ich noch vergessen habe, wenn die Datei schon existiert, dann soll er sie überschreiben. Also müsste ich so eine Abfrage machen:
Also erst alle Dateien Löschen die mit dem Namen existieren, da jeder nur eine Datei hochladen darf und es könnte ja sein, das es erst eine gif hochgeladen hatte und nun eine jpg hochläd, dann wären sonst zwei Dateien im Ordner, eine gif und eine jpeg und das darf net!PHP-Code:if (file_exists('pfad/'.$y.'.jpeg'))
// dann Datei löschen hier weiß ich nicht wie
if (file_exists('pfad/'.$y.'.gif'))
// dann Datei löschen hier weiß ich nicht wie
Danke für Euer Mühen!Geändert von FP4Lisa (13.06.05 um 11:28 Uhr)
-
Hi,
die Vorschau geht mit Javascript. Ist mit PHP nicht ralisierbar - zumindest nicht das ich es wüsste.tschöh mit öh
salia
Wenn kein Text oben vorhanden ist, hier klicken:
Für PHP -> FAQ
Für PHP -> php.net
für MySQL -> dev.mysql.com
-
Also bei der Vorschau würd ich auch nur Java Script sagen.
Mit PHP geht es nur (soweit ich weiß) nach einem Neuladen der Seite.
Du kannst ganz einfach folgendes versuchen->Ach was ich noch vergessen habe, wenn die Datei schon existiert, dann soll er sie überschreiben. Also müsste ich so eine Abfrage machen:
Meintest du das vielleicht so?PHP-Code:$jpg='pfad/'.$y.'.jpeg';
$gif='pfad/'.$y.'.gif';
if (file_exists($jpg)&&file_exists($gif))
{
unlink($jpg); //eine der beiden löschen
}
else
{
fopen($datei,"w");
fwrite($datei,$text);
}
Greetz
-
13.06.05 17:14 #4
Nee meine das net ganz so *lach* aber jetzt merke ich erstmal selber, wie blöd ich mich ausgedrückt habe!
Nun ich habe ja folgendes: Ein Besucher kann eine gif oder eine jpg datei hochladen. Es können also folgende von einander unabhängige Fälle eintreten:
A: User läd eine jpg Datei hoch, es ist noch keine andere Datei von ihm vorhanden.
B: User läd eine jpg Datei hoch, es ist schon eine jpg Datei von ihm vorhanden, welche überschrieben werden soll.
C: User läd eine jpg Datei hoch, es ist schon eine gif Datei von ihm vorhanden, welche gelöscht werden soll, bevor die neue jpg hoch darf.
D: User läd eine gif Datei hoch, es ist noch keine andere Datei von ihm vorhanden.
E: User läd eine gif Datei hoch, es ist schon eine gif Datei von ihm vorhanden, welche überschrieben werden soll.
F: User läd eine gif Datei hoch, es ist schon eine jpg Datei von ihm vorhanden, welche gelöscht werden soll, bevor die neue jpg hoch darf.
Nun brauche ich ein Script, das es mit all den Fällen aufnimmt
... also nimmt man
um des zu löschen, na mal schauen ob ich was selber basteln kann, das war der Schnipsel der mir gefehlt hat.PHP-Code:unlink($datei);
----------------------------------------------------------------------------------------------------------------------
Das mit der Vorschau lasse ich dann ersteinmal, was ich aber noch wissen mag ... hatte ja ein kleines php Skript
gepostet, mit welchem ich die Höhe ändern mag. Das Rechnerische ist net das Proplem, aber wie weise ich die neuen Maße einer Bilddatei zu?
----------------------------------------------------------------------------------------------------------------------
Schon mal ganz lieb Danke sag für eure Tips.Geändert von FP4Lisa (13.06.05 um 17:18 Uhr)
-
Ich kenne dein Benutzer-Verwaltungs-System nicht. Nehmen wir aber an, dass du in einer Variable, nennen wir sie BenutzerNummer, die Nummer oder eindeutige ID (also wenn der Name eindeutig ist, z.B. diesen) des Benutzers gespeichert hast. Nehmen wir weiter an, dass du in dem Verzeichnis "Bilder_Hochgeladen/" die hochgelanden Bilder speicherst.
So sollte es eigentlich recht einfach möglich sein, du speicherst also die Bilder ala :
Bilder_Hochgeladen/bildBenutzerNummer.endung. Konkret also z.B. bild102.jpg für ein JPEG-Bild, welches der User 102 hochgeladen hat.
Schlussendlich überprüfust du ob bild102.jpg ODER bild102.gif besteht und löscht dieses, danach bewegst du das neu hochgeladene dahin.
-
Also gilt folgendes zu erstellen:
Userbereich, in welchem er seine Bilder alle ansehen kann um zu wissen, ob und welche Bilder er bereits hochgeladen hat.
Zu jedem Bild ein Löschbutton und eine Eingabemaske, über welche er Bilder hochladen kann.
Zuvor sollte ein User der sich neu anmeldet ein eigenes Verzeichnis erhalten, in welchem ausschl. seine Bilder hochgeladen werden.
Das wäre die eine Möglichkeit. Die andere ist, alles über eine Datenbank und ein einziges Verzeichnis zu steuern.
Das erfordert eine DB-Tabelle mit den Usern und eine Tabelle mit den Bildern, welche den Usern zugeordnet sind.
Das Verzeichnis und die Funktion der Darstellung der Bilder wird somit über die DB bei Login verwaltet und entsprechend ausgegeben.tschöh mit öh
salia
Wenn kein Text oben vorhanden ist, hier klicken:
Für PHP -> FAQ
Für PHP -> php.net
für MySQL -> dev.mysql.com
-
13.06.05 17:38 #7
Habe folgendes probiert ...
...bekomme aber diesen ...PHP-Code:if (isset($_REQUEST['hochladen'])){
$tempname = $_FILES['pic']['tmp_name'];
$name = $_FILES['pic']['name'];
$namex = '.'.$name;
$dateiname = explode(".",$namex);
$datei = $dateiname[1];
$endung = $dateiname[2];
$neuername = $y.'.'.$endung;
$type = $_FILES['pic']['type'];
$size = $_FILES['pic']['size'];
$ordner = '../profilpics/';
$gif = $ordner.$y.'.gif';
$jpg = $ordner.$y.'.jpg';
$pfad = $ordner.$neuername;
if($type != "image/gif" && $type != "image/jpeg") {
$err[] = "Nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "15000") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
}
echo $gif;
if (file_exists("$gif"))
{
unlink("$gif");
}
if (file_exists("$jpg"))
{
unlink("$jpg");
}
if(empty($err)) {
copy("$tempname", "$pfad");
#header ("Location: profil.php?x=".$x);
}
else {
foreach($err as $error)
echo "$error<br>";
}
}
... hässlichen Fehler. Zugriff verweigert ... warum?Code :1
[b]Warning[/b]: unlink(../profilpics/FP4Lisa.jpg): Permission denied in [b]...\profilpicupload.php[/b] on line [b]101[/b]
Die Datei wurde aber trotzdem geändert, was denn das jetzt?Geändert von FP4Lisa (13.06.05 um 17:43 Uhr)
-
Weil du das Verzeichnis nicht geöffnet hast um unlink() auszuführen. Du musst auch für unlink() opendir() voran setzen.
tschöh mit öh
salia
Wenn kein Text oben vorhanden ist, hier klicken:
Für PHP -> FAQ
Für PHP -> php.net
für MySQL -> dev.mysql.com
-
13.06.05 18:14 #9
DANKESCHÖN du bist meine Rettung *schmatz* :O) !
-
Kein Thema
tschöh mit öh
salia
Wenn kein Text oben vorhanden ist, hier klicken:
Für PHP -> FAQ
Für PHP -> php.net
für MySQL -> dev.mysql.com
-
13.06.05 18:52 #11
Grrrrr zu früh gefreut ... irgendwie ist heute der Wurm drin!
So sieht nun der Ausschnitt aus dem Code aus ...
... nur der Fehler bleibt der selbe. Irgendwie hab ich das Gefühl heute an allgemeiner Verblödung zu leiden. Nix geht. ;-(( *heul*PHP-Code:if (file_exists("$jpg"))
{
opendir("$ordner");
unlink("$jpg");
}
-
Werde dir das später mal überarbeiten. Da fehlt noch was, damit das ganze auch auf dem Server landet.
Bis gleich, muss noch was anderes zuvor erledigen.tschöh mit öh
salia
Wenn kein Text oben vorhanden ist, hier klicken:
Für PHP -> FAQ
Für PHP -> php.net
für MySQL -> dev.mysql.com
-
13.06.05 23:37 #13
Danke dir für deine Hilfe, ich habe schon das php Handbuch gewälzt und probiert und gemacht, irgendwie bekomme ich es net hin ;-( !
-
Ungetestet!
PHP-Code:<?php
if(isset($_REQUEST['hochladen'])){
// Verzeichnisse für Bildupload nach Format.
$pfad_gif = '../profilpics/gif/';
$pfad_jpg = '../profilpics/jpg/';
// Filedaten auslesen
$temp = $_FILES['pic']['tmp_name'];
$name = $_FILES['pic']['name'];
$type = $_FILES['pic']['type'];
$size = $_FILES['pic']['size'];
// Prüfen ob das Bild gif, jpg oder jpeg Format hat.
if($type != 'image/gif' OR $type != 'image/jpeg' OR $type != 'image/jpg') {
$err = "Nur gif und jpeg Dateien dürfen hochgeladen werden.";
// Wenn Headeroption genutzt wird - dann folgende Zeile frei geben (// löschen).
// $err = 1;
}
// Auf Dateigrösse prüfen
elseif($size > '15000') {
$err = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
// Wenn Headeroption genutzt wird - dann folgende Zeile frei geben (// löschen).
// $err = 2;
}
// Dateien werden auf Format geprüft und in das entsprechende Verzeichnis kopiert.
else {
// für den explode wird vorausgesetzt, das der Bildname keine weiteren Punkt als Dateiname beinhaltet!
$bf = explode(".", $name);
$bild_format = $bf[1];
if($bild_format == 'gif') move_uploaded_file($temp, $pfad_gif.$name);
else move_uploaded_file($temp, $pfad_jpg.$name);
}
// Ausgabe der Fehler oder die Uploadbestätigung.
if($err) echo $err;
else echo "Das Bild ".$name." wurde in das entsprechende Verzeichnis kopiert."
// Optional - dann die // vor der nächsten Zeile löschen...
header("Location: dateiname.php?info=$err");
// der header steuert die angegebene Datei an. In der Datei muss dann obiger Text, welcher hinter
// $err gesetzt wurde vorhanden sein. Also statt in dieser Datei in der anderen. Durch den info-Anhang
// wird somit der entsprechende Text ausgewählt und ausgegeben.
}
?>tschöh mit öh
salia
Wenn kein Text oben vorhanden ist, hier klicken:
Für PHP -> FAQ
Für PHP -> php.net
für MySQL -> dev.mysql.com
-
14.06.05 03:13 #15
Mhmm na da haben wir wohl an einander vorbei gerdet, gifs und jpgs sollen schon in das selbe Verzeichnis kommen. Nur darf jeder user nur entweder 1 gif oder 1 jpg haben. Das Skript von mir war soweit schon richtig nur beim überschreiben, wenn der user also ein neues Bild hochläd und das alte überschreibt kommt der Fehler. Trotzdem danke für deine Mühe.
Ähnliche Themen
-
Bilder Hochladen
Von serd83 im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 24.01.09, 03:10 -
Bilder hochladen - Bilder komprimieren
Von Anubia im Forum PHPAntworten: 1Letzter Beitrag: 16.08.08, 17:43 -
Bilder Hochladen im ASP
Von karlkani im Forum ASPAntworten: 1Letzter Beitrag: 07.02.07, 20:26 -
bilder hochladen
Von franzi79 im Forum PHPAntworten: 1Letzter Beitrag: 20.04.05, 12:54 -
Bilder hochladen
Von MSuter im Forum PHPAntworten: 5Letzter Beitrag: 15.04.02, 18:41





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren