php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.01.2012, 21:17  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
embed befindet sich auf einem aufstrebenden Ast
Standard Downloadbox

Hallo Zusammen,

Ich habe folgende Vorstellung:
Auf einer Webseite soll eine Downloadbox mit Bildern aus einem bestimmten Ordner angezeigt werden. Jedes Bild hat eine Checkbox, in der festgelegt wird, dass dieses Bild gespeichert werden soll. Beim Betätigen des "Submit" - Buttons sollen dann möglichst alle ausgewählten Bilder auf dem Computer des Nutzers gespeichert werden...

Das Script für die Downloadbox, das umgebende Formular und die Checkboxen samt Beschriftung steht bereits, nur fehlt mir die richtige Lösung, dass eigentliche Speichern durchzuführen.


Bisher waren meine Ideen, die Checkboxen als Array zu verwenden und mit einer foreach - Schleife dann die gewählten Bilder als Variable zu speichern.
Als Value für die Checkboxen hätte ich dann jeweils den aktuellen Bildnamen vorgeschlagen.

Mir fehlt also nur noch eine Möglichkeit, den Speichervorgang zu starten.
Am besten wäre das, wenn man auf diese Weise ein Menü, wie beim input type="file" öffnen könnte, nur dass alle ausgewählten Bilder zum Spiechern bereits ausgewählt sind und nur noch der "Speichern" - Button betätigt werden muss.


mfg,
embed
embed ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 09.01.2012, 21:55  
Neuer Benutzer
 
Registriert seit: 11.08.2011
Beiträge: 12
PHP-Kenntnisse:
Fortgeschritten
Zeichen32 befindet sich auf einem aufstrebenden Ast
Standard

Das ist so nicht möglich und das ist auch gut so das ein PHP Script nicht auf den Rechner des Clients zugreifen darf und kann.

Was du machen könntest wäre, alle ausgewählten Dateien zu zippen und das Zip File dann als Download anzubieten.
Zeichen32 ist offline   Mit Zitat antworten
Alt 10.01.2012, 08:25  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Zitat:
Zitat von embed Beitrag anzeigen
Mir fehlt also nur noch eine Möglichkeit, den Speichervorgang zu starten.
Am besten wäre das, wenn man auf diese Weise ein Menü, wie beim input type="file" öffnen könnte, nur dass alle ausgewählten Bilder zum Spiechern bereits ausgewählt sind und nur noch der "Speichern" - Button betätigt werden muss.
Ob + wo gespeichert wird, das solltest du schon den Nutzer überlassen (und dies aus gutem Grund).
Du kannst jedoch einen Filenamen mitgeben, den der Nutzer verwenden kann (oder auch nicht). Mit javascript ist da auch nicht mehr zu machen.
jspit ist offline   Mit Zitat antworten
Alt 10.01.2012, 15:11  
Neuer Benutzer
 
Registriert seit: 31.10.2011
Beiträge: 7
PHP-Kenntnisse:
Anfänger
embed befindet sich auf einem aufstrebenden Ast
Standard

Hallo und danke für Eure Antworten...

Zitat:
Ob + wo gespeichert wird, das solltest du schon den Nutzer überlassen
Das ist wirklich nicht meine Sache... Sollte wirklich jeder selbst entscheiden können.

Zitat:
Du kannst jedoch einen Filenamen mitgeben, den der Nutzer verwenden kann (oder auch nicht).
Meinst Du damit die URL unter der das Bild auf dem Server gespeichert ist?


Gibt es mit Javascript auch keine Methode, das Speichernmenü (Wie bei Rechtsklick->Grafik speichern unter) zu öffnen?
Und wenn ja, auch gleich die Ausgewählten Bilder zum Speichern einzutragen??

mfG embed
embed ist offline   Mit Zitat antworten
Alt 10.01.2012, 15:36  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

HTTP unterstützt generell Multi-Part Message-Bodies, allerdings ist Firefox der einzigste Browser der solchen Content-Typ auch umsetzen kann ( multiple Files in einem Rutsch .. einem Klick herunterladen ). Es wird aber an allen Ecken und Kanten der Web-Entwickler-Insel absolut davon abgeraten, da es bei deiner "Kontrolle" schnell in einem "Annoying Vacuum" enden kann, also in einer Kette von Downloads, die den User überrumpeln und ärgern und dir Minus-Punkte einheimsen was deine Seite betrifft.

Ich würde dir raten es so zu machen, wie es bspw. auf der UI-Seite von jquery.com läuft, dort kannst du dir einzelne Portionen des Downloads ( der Library ) zusammenklicken und es wird dir alles was du willst on-the-fly in eine Zip-Datei gepatscht.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 10.01.2012, 15:39  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

vielleicht ist der Sachverhalt durch die erste Antwort nicht ganz deutlich geworden... die Schwierigkeit liegt im "mehrere Dateien" herunterladen ... das ist schlicht nicht möglich, daher der Vorschlag über den Zip-Umweg
EDIT sagt Danke @tr0y für die Aufklärung in dem Zusammenhang - ich vermute mal es bezieht sich auf die neueren Firefoxe ab Version 5 aufwärts?

Ansonsten per Get-Parameter den Download-Wunsch erkennen, Header verbiegen und die Datei zum Client senden ..

PHP-Code:
//$Datei=pfad+dateiname der Zip-Datei
if (file_exists($Datei)) {
   
$Dateiname basename($Datei);
   
$Groesse filesize($Datei);
   
$file=fopen($Datei,'r');
   if (
$file) {
      
header("Pragma: public");
      
header("Expires: 0");
      
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
      
header("Cache-Control: private",false);
      
header("Content-Type: application/force-download");
      
header("Content-Type: application/octet-stream");
      
header("Content-Type: application/download");
      
header("Content-Disposition: attachment; filename=\"".$Dateiname."\";");
      
header("Content-Description: File Transfer");
      
header("Content-Transfer-Encoding: binary");
      
header("Content-Length: ".$Groesse );
      
flush();
      while (!
feof($file)) {
         print(
fread($file,4096));
         
flush();
      }
   }
   
fclose($file);
   die();

- zum Erzeugen der Zip-Datei gibts ja die üblichen Bibliotheken , vorher vielleicht noch set_time_limit(0); damit dir PHP nicht mit der maximalen Script-Ausführungszeit dazwischenspuckt. Bis zum vollständigen Senden der Header darf keine weitere Ausgabe Richtung Browser erfolgen .

die üblichen Verdächtigen ;

Leerzeilen/Leerzeichen vor <?PHP ,
Ausgabe von HTML-Code
sonstige Ausgaben
besonders heimtückisch . BOM (ByteOrderMark = Byte-Zeichen zur Kennzeichnung von UTF8-Dateien, der PHP-Interpreter ignoriert sie, aber genau bei Header bringen sie dir den allseits beliebten "headers already sent"
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 10.01.2012, 15:44  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

FF7+ @eagle275
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php download box

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:51 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum