Upload Problem(e) mit class upload in neuem Modul

Begonnen von Martin, 29 Oktober 2005, 23:09:20

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Martin

Hi,
ich bin gerade dabei, ein neues Modul zu schreiben. Es soll ein Dateiverzeichnis werden, spezialisert auf Nicht-Bilddateien.
Dort sollten v.a. die Dateien vom User hochgeladen werden können.
Für den Upload habe ich mir eine Upload-Klasse gesucht (im Anhang), die an sich ganz gut funktioniert.
Folgendermaßen habe ich sie eingebunden:

<?php
$my_uploader = new uploader(de);
$my_uploader->max_filesize(150000);
$my_uploader->max_image_size(800800);
if ($my_uploader->upload($upload_file_name$acceptable_file_types$default_extension)) {
$my_uploader->save_file($datadir$mode);
?>


Nur, ich hab keine Ahnung, wie ich dort weitere Dateitypen hinzufüge, .xls Dateien kann ich einfach nicht hochladen, auch, wenn ich sie als MIME-Types eintrage...

<?php
$acceptable_file_types 
=
        
"image/gif
|image/jpeg
|application/pdf
|text/plain
|application/zip
|application/msexcel
|application/msword
|application/mspowerpoint"
;
?>


Vielleicht kennt ja jemand von Euch die Klasse und kann mir da weiter helfen.

Uund, dann hätte ich gern noch was anderes :)
Und zwar, sollten die hochgeladenen Dateien vor dem Speichern gezippt werden :)
Leider kapiere ich die OOP nicht wirklich, und weiß nicht, ob sich ein zip-Skript wie z.B. dieses irgendwie integrieren ließe..? (Fragt bitte nicht, wo ich das her habe, ich weiß es nimmer).

<?php
$dateihandle 
fopen("logo.jpg",r); //Hier das Bild angeben                         
$bild fread($dateihandle,1024000); //Da wird das Bild ausgelesen (bis zu 1MB atm) 
                                                                                    
$zipfile = new zipfile();                                                           
                                                                                    
// add the subdirectory ... important!                                              
$zipfile -> add_dir("/");                                                           
                                                                                    
// add the binary data stored in the string 'filedata'                              
$filedata $bild;                                                                  
$zipfile -> add_file($filedata"bild.jpg");                                        
                                                                                    
// OR instead of doing that, you can write out the file to the loca disk like this: 
$filename "output.zip";                                                           
$fd fopen ($filename"wb");                                                      
$out fwrite ($fd$zipfile -> file());                                            
fclose ($fd);                                                                       

?>



Wäre ein Traum, wenn mir jemand weiterhelfen könnte. Bei Interesse biete ich das Modul auch gerne zum Download an.

Viele Grüße,
Martin


[gelöscht durch Administrator]

jubilee

Hallo !
1. Konstruktor-Aufruf.
Du rufst den Konstruktor mit einem String-Übergabewert auf.
Bitte gebe den Wert auch entsprechend an :
Nicht
Zitat$my_uploader = new uploader(de);
sondern :
Zitat$my_uploader = new uploader('de');

2.
Zitatxls Dateien kann ich einfach nicht hochladen
Die Dateierweiterung von der Excel-Datei ist kleingeschrieben ?
(Bei .XLS also in Großschrift könnte es Probleme geben)
Ansonsten ändere doch einmal die Zeile 187 der Klassendatei von
Zitatelseif(!ereg("(\.)([a-z0-9]{3,5})$", $this->file["name"]) && !$extention) {
auf
Zitatelseif(!ereg("(\.)([a-zA-Z0-9]{3,5})$", $this->file["name"]) && !$extention) {
Dann muss evt. noch (nach Zeile 194 aber VOR default:) eine Erweiterung der switch Funktion erfolgen :
Zitat
case "application/msexcel":
               $this->file["extention"] = ".xls"; break;

3.
Zitat$zipfile = new zipfile(); 
Hast Du die Klassendatei zu dem Beispiel ? Sonst ist es Käse mit dem verwenden des Beispiels.

Mal stückum probieren.

MfG
jubilee



Martin

#2
Hi!
thx für die Hinweise. Hab Punkte 1 und 2 gleich geändert, aber er akzeptiert immer noch keine .xls.
Ich überleg schon, ob ich doch was eigenes machen soll, nur bei Uploads sollte man halt schon recht vorsichtig (=sicher) sein...

Und die zip-Klasse habe ich nicht, *gg* ich dachte, dazu muss man nur zlib includen...

Jetzt hab ich eine zip-Klasse gefunden (ss_zip class, wieder im Anhang), ich weiß nur nicht, ob bzw. wie ich die vor $my_uploader->save_file($datadir, $mode); einbaue...

[gelöscht durch Administrator]

jubilee

Hallo !
Versuch diese geänderte upload-Klasse einmal :
Das mit der ZIP-Klase schaue ich mir noch an

MfG
jubilee

[gelöscht durch Administrator]

Martin

vielen Dank für die Datei! :)

Leider macht er´s immer noch ned. Kapier ich nicht ganz, v.a., weil ja .doc auch nirgends mit Dateiendung etc. hinterlegt ist und trotzdem geht.
Aber mei, dann geht Excel halt erstmal nicht. Vielleicht findet sich ja noch eine bessere Upload-Klasse.

Wegen den .zip Dateien wäre es super, wenn du dazu kommen würdest, dir das anzusehen. Ich bin gerade an der Detailansicht, Suche und allg. Navigation.

Macht doch mehr Arbeit, wie ich anfangs dachte. Aber das is wohl immer so... ;)