Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Сохранение JPG через браузер (http://www.flasher.ru/forum/showthread.php?t=124878)

Demoralizator 11.05.2009 20:43

Сохранение JPG через браузер
 
помогите разобраться.
нашёл немало тем по вопросу кодирования и сохранения Jpg (png) из bitmap dat'ы, но везде рассматривается вариант с использованием fopen/fwrite, т.е. запись напрямую на диск. здесь для мня всё понятно и работает. но меня интересует вариант сохранения через браузер (пример из книги Learning action script 3.0):

Код AS3:

function onClick(evt:MouseEvent):void{
        var jpgEncoder:JPGEncoder= new JPGEncoder();
        var bArray:ByteArray= jpgEncoder.encode(bmd);// bmd - готовая bitmap data
 
        var uR:URLRequest= new URLRequest("http://localhost/save-file.php?name=1.jpg");
        uR.data= bArray;
        uR.method= URLRequestMethod.POST;
        uR.contentType= "application/octet-stream";
 
        navigateToURL(uR, "_blank");
}

PHP код:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) {
    
$jpg $GLOBALS["HTTP_RAW_POST_DATA"]; 
    
$img $_GET[‘img’];
    
header("Content-Type: image/jpeg");
    
header("Content-Disposition: attachment; filename=".$img);
    echo 
$jpg;
} else {
    echo 
"Encoded JPEG information not received."; } ?>

в итоге открывается новая вкладка в браузере:
Код:

http://localhost/save-file.php?name=1.jpg?%D1%8F%D0%A8%D1%8F%D0%B0
но условие не срабатывает:
Код:

Encoded JPEG information not received.
т.е. $GLOBALS["HTTP_RAW_POST_DATA"] остаётся пустой. если же вместо navigateToURL использовать URLLoader (и fopen/fwrite в php) то пишется нормально.
подскажите где затык?
спасибо

TERRORist 11.05.2009 21:38

на нормальных хостингах register_globals = Off

Demoralizator 11.05.2009 21:50

возможно, но fwrite пишет тоже из $GLOBALS["HTTP_RAW_POST_DATA"].

GBee 11.05.2009 23:45

Код AS3:

private function sendImage(png:ByteArray):void
{
        var request:URLRequest = new URLRequest("scripts/downloadImage.php" );
        request.data = png;
        request.method = URLRequestMethod.POST;
        navigateToURL( request, "_blank" );
}


PHP код:

<?php
header
('Content-disposition: attachment; filename=myImage.png');
header("Content-type: application/png");

readfile('php://input');
?>

я так пнг открывал, правда давно это было.
png - это уже заенкоденный байтаррай.

Demoralizator 12.05.2009 02:31

GBee, спасибо! так получилось.
т.е. (просто чтоб расставить точки над "ъ") вариант с $GLOBALS["HTTP_RAW_POST_DATA"] вообще не катит? как-то же fwrite из него прочитал.

GBee 12.05.2009 07:57

Я не знаю, я в пхп не силен :о)


Часовой пояс GMT +4, время: 23:48.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.