| 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! |
 |

27-05-2010, 10:30
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Datei unkomprimiert in Zip Verzeichnis
Hallo PHP Community,
ich arbeite gerade an einer dynamischen EPub Generierung. Dabei habe ich das Problem das ich eine Datei unkomprimiert in ein Zip Verzeichnis übertragen muss.
PHP-Code:
$epub->add_file('application/epub+zip', 'mimetype', $tstamp);
Gibt es die Möglichkeit bei add_file noch mitzuteilen das die Datei nicht komprimiert werden soll?
Über Antworten würde ich mich sehr freuen.
Grüße Yvon
Geändert von yfolz (27-05-2010 um 11:15 Uhr)
|

27-05-2010, 10:43
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo und willkommen im Forum,
Code gehört in die entsprechenden Tags (siehe Signatur).
Die erwähnte Methode add_file gehört nochmal zu welcher Klasse? Hast du schon in der Doku zu dieser Klasse nachgesehen?
PHP kann ZIP-Archive entpacken, aber ob das mit dieser Klasse on the fly möglich ist, weiß ich nicht.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 10:50
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Hallo AmicaNoctis,
ich werde mir die Einhaltung der Foreneingabe merken für die nächsten Posts. Ja, es geht um die Zip Klasse auf die Du im Link verwiesen hast. Bei meinen Netzrecherchen PHP :: Request #41243 :: How to use ZIPARCHIVE::CM_STORE stand es gehe nicht. Das war Stand 2006. Sonst bin ich leider nicht weiter fündig geworden.
Gruß Yvon
|

27-05-2010, 11:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von yfolz
ich werde mir die Einhaltung der Foreneingabe merken für die nächsten Posts.
|
Es gibt auch einen Ändern-Button mit dem man das nachholen kann.
Zitat:
Zitat von yfolz
Ja, es geht um die Zip Klasse auf die Du im Link verwiesen hast.
|
Glaub ich weniger. Erstens heißt sie dort addFile (ohne Unterstrich) und zweitens passen deine Parameter irgendwie nicht zu deren Signatur.
Du redest von irgendeiner anderen, vermutlich inoffiziellen Klasse, was es extrem schwer macht, dir irgendwie zu helfen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 11:09
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
|

27-05-2010, 11:17
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Sag mal, ist das die Klasse, die du benutzt? DevNetwork Forums • View topic - Zip class
Wenn ja, warum kannst du das nicht gleich sagen?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 11:23
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Okay,
Änderung im Beitrag oben gemacht
Ja, ich benutze eine Klasse von Welcome to the PHP Classes Repository - PHP Classes
Hier ein Auszug:
PHP-Code:
function ZipCreate($_ztype = 'gzip')
{
$this->filedata = '';
$this->cntrldir = '';
$this->comment = '';
$this->offset = 0;
$this->entries = 0;
switch(strtolower($_ztype))
{
case 'gzip' :
if (!function_exists('gzcompress'))
{
trigger_error('Your PHP installation does not support gzip compression', E_USER_ERROR);
}
$this->ztype = 'gzip';
break;
case 'bzip2':
if (!function_exists('bzcompress'))
{
trigger_error('Your PHP installation does not support bzip2 compression', E_USER_ERROR);
}
$this->ztype = 'bzip2';
break;
case 'stored':
$this->ztype = 'store';
break;
default :
// default to no (Stored) compression type for anything else
$notice_msg = 'Unsupported compression type (' . $_ztype . ') using Stored instead';
$this->ztype = 'store';
trigger_error($notice_msg, E_USER_NOTICE);
}
}
Auf dem Server ist BZip2 installiert, läuft unter Linux.
Gruß Yvon
|

27-05-2010, 11:29
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Na dann:
PHP-Code:
$epub->ztype = 'store';
um die nächste Datei unkomprimiert zu speichern, danach setzt du es wieder zurück auf den Typ, den du im Konstruktor übergeben hast.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 11:34
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Also müsste es folgendermassen aussehen:
PHP-Code:
$prev_encoding = $epub->ztype; $epub->ztype = 'store'; //Mimetyp darf nicht komprimiert werden $epub->add_file('application/epub+zip', 'mimetype', $tstamp); $epub->ztype = $prev_encoding; $epub->ztype = 'bzip2'; // add container - komprimierte files $epub->add_file($container, 'META-INF/container.xml', $tstamp);
...
Aber schon mal vielen Dank für Deine Mühe!
Komischerweise ist das doofe mimetyp immer noch komprimiert, oder ich hab' da noch einen Dreher drinnen.
|

27-05-2010, 11:44
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
PHP-Code:
$epub->ztype = $prev_encoding; // das ist besser $epub->ztype = 'bzip2'; // das kann weg
Zitat:
Zitat von yfolz
Komischerweise ist das doofe mimetyp immer noch komprimiert
|
Kann ich mir nicht vorstellen, der Code ist korrekt. Woher weißt du denn, dass es komprimiert ist?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 11:54
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Das gibt mir der EPubchecker von Google aus. Wenn ich die Datei mimetyp von Hand aus reinpacke mit Kompressionsmethode "normal" in WinRar funktioniert es anschliessend.
Das ist der ganze "Pack Code", der auf die Klasse zugreift
PHP-Code:
$prev_encoding = $epub->ztype; $epub->ztype = 'store'; //Mimetyp darf nicht komprimiert werden $epub->add_file('application/epub+zip', 'mimetype', $tstamp);
$epub->ztype = $prev_encoding;
// add container $epub->add_file($container, 'META-INF/container.xml', $tstamp);
// add opf $epub->add_file($opf, 'OEBPS/content.opf', $tstamp);
// add toc $epub->add_file($toc, 'OEBPS/tox.ncx', $tstamp);
//add cover $epub->add_file($cover, 'OEBPS/cover.xhtml', $tstamp);
//add styles $epub->add_file($style, 'OEBPS/style.css', $tstamp);
//add opener $epub->add_file($opener, 'OEBPS/Opener.xhtml', $tstamp); //add chapters $epub->add_file($chapter, 'OEBPS/Kapitel1.xhtml', $tstamp); //add infos $epub->add_file($infos, 'OEBPS/Infos.xhtml', $tstamp);
//add backcover //$epub->add_file($backcover, 'OEBPS/backcover.xhtml', $tstamp);
// add your xhtml and CSS and pictures and fonts here
// finish it up and download $output_file = $epub->build_zip(); $output_name = $story['title'] . '.epub'; $output_mime = 'application/epub+zip';
Geändert von yfolz (27-05-2010 um 11:57 Uhr)
|

27-05-2010, 12:05
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Kannst du das fertige ZIP mal als Anhang hinzufügen?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 12:43
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Datei korrekt
Die Datei im Zip Verzeichnis ist jetzt korrekt, alles jetzt nach Spezifikation.
Vielen Dank für Deine Mühe.
|

27-05-2010, 12:46
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von yfolz
Die Datei im Zip Verzeichnis ist jetzt korrekt.
|
Und woran lag es jetzt?
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

27-05-2010, 12:48
|
|
yfolz
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 18
|
|
Dein Weg war richtig, hatte dooferweise einen Schreibfehler im Code. Hatte mich auf den Epub Reader verlassen, dabei war das Problem behoben. Das Format ist grausig.
|
|
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
|