php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.12.2009, 18:57  
Erfahrener Benutzer
 
Registriert seit: 03.09.2009
Beiträge: 158
PHP-Kenntnisse:
Anfänger
kn0wledge befindet sich auf einem aufstrebenden Ast
Standard Soap Webservice ignoriert base64 codierte .png

Hallo,

Ich bastel gerade an einen Soap Webservice, ich will das Bilder extern hochgeladen werden können, klappt auch bei .jpeg und .gif, bei .png klappt das ganze aber nicht obwohl ich keinerlei Restriktionen für bestimmte Dateitypen eingebaut habe im Moment.

Ich wandle das Bild mit Base64 um und schicken es dann an den Server, der type in der wsdl sollte stimmen:
PHP-Code:
<part name="file" type="xsd:base64Binary"/> 
dann die eigentliche Funktion (wobei $file das base64 codierte Bild ist) ->

PHP-Code:
        $decode base64_decode($file);
        
$fh fopen($decode'w');
        
$newPic fwrite($fh$decode);
     
        
fclose($fh);
       
      
         
copy($decode'Images/'.$Username);
         
unlink($decode);   

        return 
true
Leider funktioniert das nicht, wenn jedoch $file ein .gif oder .jpeg ist liegt es im Image Ordner, wenn ich jetz aber einen anderen Dateityp sende zbsp. .png passiert nichts aber "true" wird zurückgegebn also eine Fehlermeldung tritt nicht auf.
kn0wledge ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.12.2009, 19:12  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Natürlich bekommst du true zurück, weil solange keine der zeilen vorher einen fatal-error macht und das script beendet, es immer zum return true; kommen wird.

Als erstes solltest du vielleicht mal die rückgabe-werte der einzelnen Funktionen überprüfen:

base64_decode kann ab php 5.2 mit $strict = true ein boolsches false zurückgeben, damit kannst du erstmal überprüfen ob base64_decode was mit den ankommenden daten anfangen kann

als nächstes dann schauen was fopen, fwrite, copy zurückgeben.


Ausserdem macht der code für mich auf den ersten blick keinen sinn.

PHP-Code:
        $decode base64_decode($file); 
was ist $decode dann ? datei-inhalt ? dateiname ?
PHP-Code:
        $fh fopen($decode'w');
        
$newPic fwrite($fh$decode); 
du öffnest die datei mit dem pfad der in $decode steht UND schreibst den Inhalt von $decode rein ? Sollte $decode der inhalt sein, also binäre daten die das bild darstellen ... ROFL ... wie soll er das als PFAD verwenden ? und wenn es der Pfad ist ... wie soll ein intaktes png ankommen wenn du in die bild-datei nen pfad reinschreibst ?

Also bitte mal ordentlich deinen code testen, du hast KEINERLEI fehlerbehandlung darin, daher auch immer TRUE ...
robo47 ist offline   Mit Zitat antworten
Alt 25.12.2009, 20:41  
Erfahrener Benutzer
 
Registriert seit: 03.09.2009
Beiträge: 158
PHP-Kenntnisse:
Anfänger
kn0wledge befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von robo47 Beitrag anzeigen
Natürlich bekommst du true zurück, weil solange keine der zeilen vorher einen fatal-error macht und das script beendet, es immer zum return true; kommen wird.
Ja natürlich genau, ich sage doch auch nichts anderes hab ja gesagt das true ausgeben wird, also kein schwerwiegender Fehler auftritt

Zitat:
Zitat von robo47 Beitrag anzeigen
Als erstes solltest du vielleicht mal die rückgabe-werte der einzelnen Funktionen überprüfen:

base64_decode kann ab php 5.2 mit $strict = true ein boolsches false zurückgeben, damit kannst du erstmal überprüfen ob base64_decode was mit den ankommenden daten anfangen kann

als nächstes dann schauen was fopen, fwrite, copy zurückgeben.


Ausserdem macht der code für mich auf den ersten blick keinen sinn.

PHP-Code:
        $decode base64_decode($file); 
was ist $decode dann ? datei-inhalt ? dateiname ?
jep - > $decode = datei-inhalt

Zitat:
Zitat von robo47 Beitrag anzeigen
PHP-Code:
        $fh fopen($decode'w');
        
$newPic fwrite($fh$decode); 
du öffnest die datei mit dem pfad der in $decode steht UND schreibst den Inhalt von $decode rein ? Sollte $decode der inhalt sein, also binäre daten die das bild darstellen ... ROFL ... wie soll er das als PFAD verwenden ? und wenn es der Pfad ist ... wie soll ein intaktes png ankommen wenn du in die bild-datei nen pfad reinschreibst ?

Also bitte mal ordentlich deinen code testen, du hast KEINERLEI fehlerbehandlung darin, daher auch immer TRUE ...
Das mit dem True ist klar, jedoch funktioniert mein code so wie er soll bei .jpeg und .gif Datein und das ist für mich nich logisch wieso es bei .png nicht funktioniert.
Und natürlich wird auch geprüft ob z.bsp $file überhaupt gesetzt ist, das war ein kleiner auszug der relevant ist.

Aber thx das mit dem fopen ist und dem fwrite ist falsch werd mich da drum jetz mal kümmern : ) trotzdem find ich es unlogisch das es bei .jpeg oder .gif funktioniert.

Geändert von kn0wledge (25.12.2009 um 21:04 Uhr).
kn0wledge ist offline   Mit Zitat antworten
Alt 25.12.2009, 21:03  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von kn0wledge Beitrag anzeigen
jep - > $decode = datei-inhalt
Dass das ganze mit jpeg oder gifs funktioniert ist dann wahrscheinlich purer Zufall, weil wenn du $decode was der inhalt ist, als dateipfad verwendest ... wie das am ende interpretiert wird will ich garnicht wissen, vielleicht enthalten pngs dann wirklich zeichen die ein problem machen ...
robo47 ist offline   Mit Zitat antworten
Alt 25.12.2009, 21:46  
Erfahrener Benutzer
 
Registriert seit: 03.09.2009
Beiträge: 158
PHP-Kenntnisse:
Anfänger
kn0wledge befindet sich auf einem aufstrebenden Ast
Standard

ok thx habs jetz so gelöst:

PHP-Code:
        if (isset($file) && $file != NULL)
        {
        
$filepath 'Uploads/'.uniqid();         
        
$decode base64_decode($file);      
        
$fh fopen($filepath'w');
        
$newPic fwrite($fh$decode);     
        
fclose($fh);        
        
unlink($decode); 
          if(
exif_imagetype($filepath) == || exif...... =  2 etc)
        { 
          return 
'erfolgreich...';  
            
        } else { 
                      
unlink($filepath);
                      return 
'falscher Dateityp....';
                      }         
       
       } 
gibt es eine Möglichkeit den Dateityp zu prüfen bevor er auf die Platte geschrieben wird?
kn0wledge 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Soap Webservice aufrufen Zender JavaScript, Ajax und mehr 4 11.10.2008 20:08
Fragen und Verwendung der SOAP Erweiterung von PHP Tanja PHP-Fortgeschrittene 5 15.09.2008 09:29
SOAP Webservice mit Dokument in der Response phpBone PHP-Fortgeschrittene 9 04.09.2008 23:16
Suche Hilfe Webservice Soap / PHP5 manfred$ Beitragsarchiv 1 06.08.2008 19:22
[Erledigt] XML String an Webservice übergeben (SOAP) PHP-Fortgeschrittene 3 26.08.2005 12:40
[Erledigt] Performance Fragen zu PHP4/OOP und SOAP RPC Webservice PHP-Fortgeschrittene 4 26.05.2005 14:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
base64binary php, php soap base64, soap base64, php base64binary, php soap base64binary, soap png, php soap bilder, webservice base64binary, wsdl base64, xsd:base64binary php, zend_soap base64, webservice , php xsd base64, php soap server base64binary, soap jpg php, java webservice bild base64, base64binary soap, php soap base64 image, soap base64binary php, php png base64

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:21 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