php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-03-2006, 07:09
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard move_uploaded_file() ????

Hallo zusammen

ich habe ein klitze kleines Problem mit der obengenannten Funktion in meiner Upload Klasse. Eine Funktion dieser Klasse ist dafür zuständig die hochgeladenen Files je nach Dateierweiterung weiterzuverarbeiten. Bei jpeg und gif werden Thumbs erstellt und mit dem Originalbild bei der Ausgabe verlinkt. Das Problem sind die bmp Files. Diese soll die Fkt einfach aus dem Upload Ordner verschieben, dann einlesen und als GZip File zum Download anbieten. Funzt auch wunderbar, das GZip File wird korrekt heruntergeladen.
Das Problem ist, dass der Name des bmp Files im Archiv falsch ist. Am Ende des Namens wird immer -Zahl angehängt. Die Zahl scheint aus dem tmp_name des Upload Files zu kommen (ist immer die letzte Zahl des Namens) und sieht so aus --> dateiname.bmp-1
Wie kommt also PHP dazu diesen Namen zu verwenden v.a. da ich nicht die temporäre Datei, sondern die verschobene (mit neuem Namen) verwende.
Bei allen anderen File Extesions funzt das wunderbar. Der einzige Unterschied ist, dass bei bmp Files das Einlesen des verschobenen Files im gleichen Aufruf des Objekts stattfindet. Bei den anderen Files wird erst auf die Ausgabeseite umgeleitet und dort das Objekt neu instanziert. Dann funzt es.
Kann das ganze also daran liegen, dass ich versuche die Datei einzulesen und ggf move_uploaded_file() noch irgendwie auf die Datei zugreift ? Auf dem gesamten Server existiert kein File mit dem Namen wie er im GZip File vorkommt.

Danke vielmals für Eure Tipps
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-03-2006, 10:10
Shurakai
 Master
Links : Onlinestatus : Shurakai ist offline
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.084
Shurakai ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hm, mal verschieben und dann den Namen ausgeben lassen....
Mit Zitat antworten
  #3 (permalink)  
Alt 14-03-2006, 10:22
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Der Name ist korrekt ohne diese besch.. Zahl am Ende. Die Fkt die das GZip macht liest die Datei ja mit dem neuen Namen ein und wenn dort noch die Zahl wäre, dann wäre diese Zahl auch im Namen des Archivs sichtbar, da ich einfach hinter den Filenamen noch '.gzip' anhänge und dann den Inhalt mittels header und echo an den Browser durchschicke.
ausserdem exisitert die Datei so wie sie innerhalb des Archivs heisst auf dem gesamten Server nicht !! Auch der tmp_name war anders (nur die Zahl scheint daraus übernommen zu werden).

Noch weitere Ideen oder ist dat ein Bug ?

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #4 (permalink)  
Alt 14-03-2006, 10:46
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

sowas kenn ich so ähnlich bei animierten Gif-Bildern - ich weiß jetzt nur ned genau bei welchem Verarbeitungsschritt das geschieht - ich glaub beim erzeugen der Thumbs mit imagemagick - da speichert er mir jeden Animationsschritt auch mit ner Ziffer nach dem Dateinamen ab und nicht mehr das komplette Gif - trifft natürlich nicht konkret auf deinen Fall zu aber vielleicht fällt dir dadurch was dazu ein.

Was sagen Testausgaben der grad aktuellen Dateinamen beim jeweiligen Verarbeitungsschritt?
Mit Zitat antworten
  #5 (permalink)  
Alt 14-03-2006, 10:55
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Was sagen Testausgaben der grad aktuellen Dateinamen beim jeweiligen Verarbeitungsschritt?
Der aktuelle Dateinamen wird aus $this->name übernommen und dieser Wert wird aus dem name ermittelt, den der Client mit dem File beim Upload mitschickt.
Nachdem move_uploaded_file() aufgerufen wurde (als Zielname wird $this->name übergeben) sehe ich das korrekte File mit dem korrekten Namen auf der Platte.
auch das Einlesen geschieht über die Var $this->name und darum kann ich mir absolut nicht erklären warum sich dieser Name ändern sollte v.a. da ein var_dump($this->name) an verschiedenen Stellen nur die erwarteten Werte bringt. Wie gesagt wenn ich erst auf die Datei zugreifen will, wenn ich das Objekt neu instanziere, dann findet er die Datei ohne Probs und es ist auch keine Zahl im Namen enthalten.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #6 (permalink)  
Alt 14-03-2006, 11:00
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

dann kanns ja fast nur noch am zippen liegen, oder? hab nur leider keine Ahnung von zippen mit PHP - verwendest du da was externes oder PHP eigene Zip-Funktionalitäten?
Mit Zitat antworten
  #7 (permalink)  
Alt 14-03-2006, 11:06
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich verwende gzencode($this->name,9) um den kompremierten String zu erstellen. Dieser wird nach senden der entsprechenden Header mittels echo zum Download ausgegeben.
Ich glaube nicht, dass es an dieser Fkt liegen kann, da das Ganze ja korrekt funzt, wenn ich das Objekt erst neu instanziere.
Kann es sein dass move_uploaded_file() noch irgendwie den Finger auf der Datei hat, wenn das Script noch nicht zu Ende gelaufen ist ? Könnte daher die Zahl kommen ? Da diese ja jeweils immer vom tmp_name zu kommen scheint, muss doch der Fehler bei einer Funktion liegen, die diesen Namen noch kennt. Und da käme doch nur move.. in Frage. Alle anderen Funktionen kriegen nur den $this->name als Argument.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #8 (permalink)  
Alt 14-03-2006, 11:07
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Hast du das Problem mit verschiedenen Browsern - oder nur mit einem (ganz bestimmten) ...?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 14-03-2006, 11:08
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Was passiert, wenn du mal mit nem fixen Dateinamen testest?
Mit Zitat antworten
  #10 (permalink)  
Alt 14-03-2006, 11:42
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@wahsaga
Nö in allen Browser.

@quetschi
Werde ich mal probieren sobald ich zu Hause bin. Kann mir aber nicht richtig vorstellen, dass es dann klappen könnte, weil der Name ja immer gleich bleibt (seit in eine Funktion ausgelesen und auf $this->name) und somit ja auch so was wie "fast" fix ist.
Und wie bereits geschrieben tritt das Problem nur auf wenn das Objekt nicht neu instanziert wird. Wenn neues Objekt dann funzt alles (mit dem gleichen Namen)

Gruss + Danke für Eure Hilfe

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #11 (permalink)  
Alt 14-03-2006, 16:40
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@quetschi
So habe das jetzt mal mit fixen Namen getestet --> gleiches Problem. Da habe ich den fraglichen Codebereich mal aus dem Objekt rausgenommen und ein kleines Testform geschrieben. Dort funzt der Upload und das Erstellen der Gzip Files wunderbar und der Name des Files innerhalb des Archivs ist korrekt.
Stehen aber die gleichen Codezeilen wieder in einer Methode des Objekts, dann ist die Zahl im Namen wieder vorhanden.
Muss also irgendwie was mit dem Objekt zu tun haben, aber ich habe keinen Schimmer in welche Richtung es gehen könnte. Die Zahl scheint irgendwie ein interner Zähler zu sein, aber woher der kommt ??

Danke für jeden weiteren Tipp
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #12 (permalink)  
Alt 14-03-2006, 17:40
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hier habe ich mal noch die fraglichen Stellen aus dem Quellcode. Vielleicht sieht jemand ja noch was...
Die Globals kommen aus dem Config File der Klasse. $this->name ist zum Zeitpunkt des Aufrufs temp.bmp und im GZip File aber temp.bmp-{irgendeinZähler} Auf der Festplatte liegt nur temp.bmp
PHP-Code:
private function createPic($tmp_name){
   
/**Zuerst wird das File geprüft ob es überhaupt eine gültige Bilddatei ist
   [...]
    */
    
switch($this->ext){
        case 
'bmp':
           
move_uploaded_file($_FILES[$GLOBALS['feldname']]
           [
'tmp_name'],$GLOBALS['pfad'].$this->name);       
           
$this->createGZ($this->name,true,true);
        break;
    [...]
    }

public function 
createGZ($datei,$gz=true,$header=true){
    if(
$this->fehler === true) return false;
    if(
$header === true){
        if(
$gz === true){
             
$temp file_get_contents($GLOBALS['pfad'].$datei);
         
$temp gzencode($temp,9);
         
header('Content-Type: application/force-download');
         
header('Content-Disposition: attachment; 
             filename="'
.$datei.'.gz"');
         
header('Content-Length: '.strlen($temp));
         echo 
$temp;
             exit;
        }else{... 
Danke für alle Tipps
Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #13 (permalink)  
Alt 14-03-2006, 17:59
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

hab mal gzencode im Manual nachgelesen - was ich grad nicht raffe:
wie weiß gzencode überhaupt, wie die Datei im Archiv heißen soll

der übergabeparameter ist ja lediglich der Inhalt der zu packenden Datei, aber nicht der Name.

Irgendwie steh ich da grad ein wenig daneben...
Mit Zitat antworten
  #14 (permalink)  
Alt 14-03-2006, 18:10
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
der übergabeparameter ist ja lediglich der Inhalt der zu packenden Datei, aber nicht der Name.
Woher genau das die Fkt weiss, schnall ich auch ned ganz. Aber bei jpg gif pdf txt csv funzt das Erstellen der Archive wie gewünscht und mit der gleichen Funktion. Der Name muss imho irgendwo im Datenstrom der Datei stecken, der via file_get_contents() gelesen wird.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #15 (permalink)  
Alt 14-03-2006, 19:05
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von jahlives
Der Name muss imho irgendwo im Datenstrom der Datei stecken, der via file_get_contents() gelesen wird.
Das glaube ich nicht, Tim ...


Ich vermute eher, dass das entpackende Programm ihn selber aus dem Namen der gepackten Datei herleitet, wenn darin keiner angegeben ist ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

Projektmanagement Damals und Heute
Projektmanagement Damals und HeuteWerfen Sie einen Blick auf das, was sich verändert hat, und entdecken Sie, wo die Zukunft dieses Gebietes hinsteuert.

18.01.2021 | Berni

Arbeitsmanagement-Tools
Arbeitsmanagement-ToolsWarum jedes Team Arbeitsmanagement-Tools benötigt. Man schätzt, dass 25% eines durchschnittlichen Mitarbeiter-Tages durch ineffiziente Arbeit vergeudet werden.

11.12.2020 | Berni


 

Aktuelle PHP Scripte

PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

29.04.2021 mirko_swm | Kategorie: PHP/ Mail
OXID eShop

Mit OXID eshop bieten wir Ihnen eine modulare und skalierbare Internet Shopping Software mit einem hervorragenden Preis-/Leistungsverhältnis.

29.04.2021 eric.jankowfsky@ | Kategorie: PHP/ Shops
PHP-Login

Die Aufgabenstellung bestand darin, ein einfaches Login-Script zu erstellen, dass schnell und universell auf jeder Webseiten eingebaut werden kann. Der Schwerpunkt lag dabei auf der Entwicklung eines universell einsetzbarem Modul für den Login und zur

05.04.2021 Wallhalla | Kategorie: PHP/ Kundenverwaltung
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:15 Uhr.