AS3 Загрузить PNG из PHP - PullRequest
1 голос
/ 24 мая 2011

Мне нужна помощь с загрузкой файла PNG с сервера в мой проект Flash. Что я хочу сделать, так это уметь вызывать страницу PHP и отправлять ей переменную, которую я могу сделать. Затем я хочу получить доступ к БД и получить путь к изображению, я тоже могу это сделать. То, что я не уверен в том, что делать тогда. Что мне нужно сделать, это PHP, чтобы вернуть PNG для прошивки как-то. Могу ли я просто добавить PNG на страницу php и как-нибудь использовать загрузчик? Я искал в Google, но большинство учебников, похоже, выдают PNG.

Спасибо Ben

Ответы [ 3 ]

4 голосов
/ 24 мая 2011

Это на самом деле довольно легко.:)

<?php
    // do some mysql magic.
    // let's assume you get a filename back as $file_name;

    header('Content-type: image/png');
    readfile($file_name);

Обратите внимание, что вам, возможно, придется также включить некоторую информацию о пути.Не уверен, где хранятся ваши изображения, но если изображение находится в / var / www / public / images, вы бы хотели добавить это в вызов file_get_contents.


Добавлено: также, если вы просто хотите вернуть путь к PNG, вы можете сделать URLRequest к файлу PHP, позволить ему выяснить, где находится изображение, и вернуть URL.Это еще проще ... Я бы просто рекомендовал стандартизировать протокол обмена данными, такой как XML или (еще лучше), JSON ... таким образом, если вы когда-нибудь решите, что хотите выйти из Flash и использовать браузерные технологии, вашбэкэнд уже будет ждать вас.

<?php
    // do some mysql magic.
    // let's assume you get a filename back as $file_name;

    $retVal = array('pathname'=>$file_name);
    header('Content-type: application/json');
    echo json_encode($retVal);
2 голосов
/ 24 мая 2011

если вы можете просто вернуть URL-адрес во флэш-память, этого будет достаточно.

import flash.display.*;
 import flash.net.URLRequest;
 var rect:Shape = new Shape();
 rect.graphics.beginFill(0xFFFFFF);
 rect.graphics.drawRect(0, 0, 100, 100);
 rect.graphics.endFill();
 addChild(rect);
 var ldr:Loader = new Loader();
 ldr.mask = rect;
 var url:String = ""; //put the returned img url you got from the php here.
 var urlReq:URLRequest = new URLRequest(url);
 ldr.load(urlReq); //the loader will start loading the img
 addChild(ldr); //here you add the loader to stage. 

может быть, для одного или двух миллисекунд вы просто ничего не видите. Но как только загрузчик загрузит img, вы увидите его.

Вы должны ввести возвращенный URL-адрес img. Так что не URL-адрес веб-страницы, которая возвращает img url.


Если вы объедините вышеизложенное с ответом Джона Грина - PageSpike, вы можете использовать мой код, если страница php совпадает с той, что была у Джона Грина - PageSpike его ответ, и вы передаете вместо возвращенного img, а затем передаете URL-адрес страницы php с параметром;

var url:String = "http://www.yoursite.com/getImage.php?imgParameter=image123";

Таким образом, URL теперь является ссылкой на скрипт Джона Грина - PageSpike, который будет возвращать изображение.

1 голос
/ 24 мая 2011

Как уже упоминал Джон Грин, он будет работать

http://www.yourserver.com/filesforflash/?file_id={id}
header('Content-type: image/png');
readfile($file_name);

, но иногда вам может понадобиться указанная выше ссылка, которая не будет работать, даже если вы отправляете заголовки с типом содержимого image / png.Быстрый совет для этого - вместо этого отправлять само имя файла, если его идентификатор

http://www.yourserver.com/filesforflash/{id}-filename.png

. Для этого вам может понадобиться использовать mod-rewrite.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...