Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   AS3 + php: "тихая" отправка изображения на сервер. (http://www.flasher.ru/forum/showthread.php?t=155784)

zaero33 10.05.2011 12:40

AS3 + php: "тихая" отправка изображения на сервер.
 
Добрый день.
Ситуация у меня такая: пользователь в swf редактирует изображение, после этого жмет "отправить". По нажатию картинка должна отправляться на сервер. Для этого пользуюсь кодом из примера:
Код AS3:

import flash.display.*;
import flash.net.URLRequest;
import flash.net.URLVariables;
 
function savePaint(event:Event) {
        var data_bmp:BitmapData = new BitmapData(canvas.width,canvas.height);
        data_bmp.draw(canvas);
        var pngStream:ByteArray = PNGEncoder.encode(data_bmp);
 
        var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream");
        var url_req:URLRequest = new URLRequest("http://MyHost.ru/img_saver.php");
        url_req.requestHeaders.push(header);
        url_req.data = pngStream;
        url_req.method = URLRequestMethod.POST;               
        navigateToURL(url_req);
}

PHP код:

<?php
$image_data 
$GLOBALS["HTTP_RAW_POST_DATA"] ;
$filename_to_save "canvas.png";

if(isset(
$image_data)){
    
$png_file fopen($filename_to_save"wb") or die("File not opened!");
    if(
$png_file){
          
set_file_buffer($png_file20);
          
fwrite($png_file$image_data);
          
fclose($png_file);
    }
}       
?>

Все работает как нужно, картинка отправляется, однако при отправке URL обработчика (http://MyHost.ru/img_saver.php) открывается в новой вкладке. Мне же нужно, чтобы картинка тихо укладывалась на сервер без открытий в браузере дополнительных URL'ов.

Нашел на форуме аналогичную проблему:
http://www.flasher.ru/forum/showthre...E5%F0%E2%E5%F0
Человеку посоветовали использовать URLLoader. Попытался использовать его вместо navigateToURL вот так:
Код AS3:

 var u:URLLoader= new URLLoader();
 u.load( url_req );

однако ничего не изменилось - http://MyHost.ru/img_saver.php по прежнему открывается в новой вкладке.
Подскажите пожалуйста, что я делаю не так? Как "тихо" отправить изображение на сервер?

Obi 10.05.2011 13:02

Функция navigateToUrl предназначена как-раз для того, чтобы открывать страничку в браузере. Ничего удивительного в том, что она ее открывает.

Все правильно, используйте URLLoader.load. Только не забудьте убрать из кода все упоминания navigateToURL и перекомпилировать флешку :)

zaero33 10.05.2011 13:22

Заработало
Негодяйская Опера закешировала swf, поэтому смена navigateToURL на URLLoader не срабатывала.
Большое спасибо за участие :)


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

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