Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как загрузить картинку с кириллицей в имени файла (http://www.flasher.ru/forum/showthread.php?t=170350)

flasher2011 23.10.2011 04:13

Как загрузить картинку с кириллицей в имени файла
 
Здравствуйте!

Не отображается картинка в браузере, если в название на русском языке.

Запускал в Опере, Мозилле и IE. Причем, во флешке все выводится.
Также если название английскими буквами - тоже все рисунки показываются.

Если кто знает - подскажите. :)

Код AS3:

package
{
 import flash.display.Bitmap;
 import flash.display.Loader;
 import flash.display.MovieClip;
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.HTTPStatusEvent;
 import flash.events.IOErrorEvent;
 import flash.events.SecurityErrorEvent;
 import flash.events.TouchEvent;
 import flash.external.ExternalInterface;
 import flash.net.navigateToURL;
 import flash.net.URLRequest;
 import flash.system.ApplicationDomain;
 import flash.system.LoaderContext;
 import flash.system.Security;
 import flash.utils.ByteArray;
 
 
 
 public class NewClass extends Sprite
 {
  private var loader:Loader;
 
 
  public function NewClass():void
  {
  if (stage) init();
  else addEventListener(Event.ADDED_TO_STAGE, init);
  }
 
  private function init(e:Event = null):void
  {
  removeEventListener(Event.ADDED_TO_STAGE, init);
 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////       
 
    var request:URLRequest = new URLRequest("Автомобиль.jpg");
 
    loader = new Loader();
 
    loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
    loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioerrorListener);
 
    loader.load(request)
  }
 
  private function initListener(e:Event):void
  {
  var image:Bitmap = e.target.content as Bitmap;
  addChild(image);
  }
 
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
  private function ioerrorListener(e:IOErrorEvent):void
  {
  trace(e.text);
  }
 }
 
}

Также браузеры не обновляют страницы.
Дополняю в адресной строке к php-странице с флешкой ?Math.random() - и ничего.
И только после очистки истории в Опере и удалении файлов в IE страницы при следующем обновлении перерисовываются.

goodguy 23.10.2011 09:34

Цитата:

Дополняю в адресной строке к php-странице с флешкой ?Math.random() - и ничего.
и что? В этом случае получается примерно следующий запрос:
Код AS3:

"http://somesite.com/"Автомобиль.jpg?Math.random()"

а нужно добавлять так:
Код AS3:

 var request:URLRequest = new URLRequest("Автомобиль.jpg?" + Math.random());

Проверено неоднократно, все работает.

По поводу русских шрифтов, программе собственно, все равно какой это шрифт, если он хранится в юникоде. Можно даже названия переменных и методов писать по-русски.
Только что проверил, все грузится. Переименовал картинку во флешдевелоп

Wolsh 23.10.2011 10:39

goodguy, речь не о шрифте а о имени файла. И о запросе, отправляемом через браузер. Т.е. в url-кодировке, где кириллица будет представлена всякими "%20". По-идее, сервер такую строку разберет, а вот система вряд ли будет этим заниматься.

goodguy 23.10.2011 11:24

Стоп, ну а причем тут тогда флеш вообще?
Я исходил из этой строки:
Код AS3:

var request:URLRequest = new URLRequest("Автомобиль.jpg");


scarbo 23.10.2011 12:06

http://help.adobe.com/ru_RU/FlashPla...unescape%28%29

flasher2011 23.10.2011 20:40

goodguy, сделал как Вы и сказали. Только еще добавил (подсказали на demiart.ru) заголовок на запрет кеширования в php-странице:

Код AS3:

header("Cache-Control: no-store, no-cache, must-revalidate");

Теперь страница обновляется.



Wolsh, смотрел в Мозилле с плагином Firebug на адрес загружаемого(request.url: Автомобиль.jpg?0.2859626426361501) рисука :

Код AS3:

http://localhost/site/bin/%C0%E2%F2%EE%EC%EE%E1%E8%EB%FC.jpg?0.04425304662436247

Как Вы и сказали.



scarbo, получилось. Но редактировал код и вновь не работает:

Код AS3:

var request:URLRequest = new URLRequest(unescape("Автомобиль.jpg?" + Math.random()));



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

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