• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

AjaxUpload - Problem mit IE9

zowo

New member
Hallo, hab ein Problem beim Upload von Bildern per Ajax im IE 9.

Ich verwende das folgende Plugin (http://valums.com/ajax-upload/) um das File per Ajax an den Server zu senden. Funktioniert eigentlich alles ganz toll, aber leider nicht im IE9.

Dort will der Browser das File direkt wieder downloaden (?!), wenn man es hochladen will. Das Ganze hat anscheinend mit der Response-Type bzw. -Format zu tun, welches der IE9 nicht interpretieren kann.

Auf Stackoverflow habe ich einen Thread (javascript - Ajax upload not working on IE9/Chrome - Stack Overflow) gefunden, wo das Problem angesprochen wurde.

Der Response-Typ muss also für den IE auf "text/html" gesetzt werden. Ich habe das in der Ajax-Methode die vom JS-Script aufgerufen wird, versucht einzubinden:


Code:
        $this->getResponse()                ->setHeader('Content-Type', 'text/html')
                ->setBody($jsonAnswer)
                ->sendResponse();
Daraufhin will der IE zumindest das File nicht mehr direkt downloaden wieder, also die Leiste wie hier auf dem Bild zu sehen erscheint nicht mehr. Aber trotzdem tut sich danach nichts mehr, nach erfolgreichen Upload soll auf eine anderen Action umgeleitet werden.

409GU.jpg

Hier noch der JS-Code:

Code:
    new AjaxUpload('imageUpload', {        action: '/ajax/storeuserpic',
        name: 'picture',
        debug: false,
        //allowedExtensions: ['jpg', 'jpeg', 'png'],
        onSubmit: function(file, extension) {
        },
        onComplete: function(file, response) {
            //check the response.status
            if (response.status == "success") {
                location.href="/user/profilepic?step=1&src="+response.fileName;
            } else {
                messageError(response.message); 
            }   
        }        
    });
Jeder Input ist hilfreich!
Danke im Vorraus
 

zowo

New member
Hallo Heinrich!

Danke für die Info, wobei man den Response ja im PHP-Code setzen kann laut stackoverflow-Posting und es dann theoretisch mit jedem Script gehen müsste. Ich werde das andere Plugin mal antesten und gebe dann Bescheid.
 

Spin_1987

New member
Moin,

also einen Image-Upload über Ajax ohne SWF File oder Iframe ist sehr schwierig zu realisieren bzw. benötigt sehr viel Geduld und Ausdauer. Da der IE9 sowas wie HTML5 versteht würde ich einfach einen HTML5 Uload empfehlen. HTML5 image upload, resize and crop

Außerdem ist IFRAME böse und gefährlich.

Da "draußen" sind noch viel mehr Beispiele , like HTML5 upload.

Sobald du den IE8 und den IE 7 auch noch unterstützen musst, dann bleibt dir nur PHP. Da geht zwar Ajax, aber du kannst den JSON Parser nicht verwenden. Der IE kennt den nicht, dass heißt du musst dich um noch mehr Abhängigkeiten kümmern.

Bei einem Ajax Upload musst du als Return Header immer application/json setzen, wenn du auch JSON zurückgibst. Wenn du XML zurückgibst dann analog.

Dein Beispiel benutzt Iframe:

PHP:
var iframeHtml = '<iframe id="' + frameId + '" name="' + frameId + '" style="position:absolute; top:-9999px; left:-9999px"'; :(
 

Spin_1987

New member
IFrames security summary

Hallo Kaiuwe,

es gibt zahlreiche Themen, bei dennen Iframes nicht benutzt werden sollten. Man vertraut immer anderen Inhalten und bei einem AjaxUpload kann auch einiges injected werden. Die Serverseitige Prüfung sollte ja eh vorhanden sein ;)

Es gibt doch soviele schöne Alternativen, warum also heutzutage Iframes verwenden? Das finde ich echt überflüssig und der Austausch fällt einen ziemlich einfach. Vorallem besitzen die Alternativen meist weniger Programmierzeilen!
 

Kaiuwe

Super-Moderator
Danke für den Link.

es gibt zahlreiche Themen, bei dennen Iframes nicht benutzt werden sollten. Man vertraut immer anderen Inhalten und bei einem AjaxUpload kann auch einiges injected werden. Die Serverseitige Prüfung sollte ja eh vorhanden sein ;)

Es gibt doch soviele schöne Alternativen, warum also heutzutage Iframes verwenden? Das finde ich echt überflüssig und der Austausch fällt einen ziemlich einfach. Vorallem besitzen die Alternativen meist weniger Programmierzeilen!
Ich habe nur nach den Sicherheitsbedenken gefragt und nicht gesagt, dass man Inline-Frames verwenden sollte. Ich selbst setzte jedenfalls keine ein. :)
 
Oben