Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   FileReference и скачивание файла (http://www.flasher.ru/forum/showthread.php?t=116682)

denis_ka 08.10.2008 13:30

FileReference и скачивание файла
 
Доброго времени суток!

При скачивании файла открывается диалоговое окно с вопросом куда сохранить файл. После выбора папки и нажатия кнопки "Сохранить" файл не сохраняется. Но после того как файл был открыт непосредственно через браузер по прямой ссылке и при повторном скачивание файла через диалоговое окно происходит скачивание файла на локальный ПК.

Получается, что после того как файл сохранился во временном хранилище браузера он скачивается. Каждый раз открывать файл для скачивания в браузере и затем скачивать через FileReference не дело.

Почему такое может происходить и можно ли это как-то решить?

Спасибо.

Wolsh 08.10.2008 14:27

Ну а код выложим?)))) Или будем гадать на кофейной гуще? Причины разные могут быть. Например, не создан экземпляр файлРеференс через new, или он занят другим соединением. Или с политикой безопасности чтото не так. Или с путем.

denis_ka 08.10.2008 14:49

Пожалуйста!

Код:

import flash.net.FileReference;

 var listener:Object = new Object();
 
 listener.onSelect = function(file:FileReference):Void {
  trace("onSelect: " + file.name);
  trace("size: " + file.size + " bytes");

 }
 
 listener.onCancel = function(file:FileReference):Void {
  trace("onCancel");
 }
 
 listener.onOpen = function(file:FileReference):Void {
  trace("onOpen: " + file.name);
 }
 
 listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
  trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
 }
 
 listener.onComplete = function(file:FileReference):Void {
  trace("onComplete: " + file.name);
 }
 
 listener.onIOError = function(file:FileReference):Void {
  trace("onIOError: " + file.name);
 }
 
 var fileRef:FileReference = new FileReference();
 fileRef.addListener(listener);
 var url:String = "http://domain.com/path/file.mov";
 var url_name = get_file_name(url);
 trace ("saving file from: " + url + " filename: " + url_name);
 if(!fileRef.download(url, url_name)) {
  trace("dialog box failed to open.");
 }


Wolsh 08.10.2008 16:19

get_file_name(url) поподробнее

denis_ka 08.10.2008 17:36

Цитата:

Сообщение от Wolsh (Сообщение 768839)
get_file_name(url) поподробнее

get_file_name - это функция, которая возвращает имя файла из заданной строки. Т.е. из URL http://domain.com/path/file.mov функция `get_file_name` вернёт `file.mov`. Ведь именно переменная `url_name` выводится в строке "Имя файла:" в диалоговом окне. Верно?

Я не специалист по Flash и писал Flash-приложение не я. Но пытаемся разобраться почему не происходит сохранение

Wolsh 08.10.2008 18:41

Думаю дело в безопасности (код из хелпа, не придерешься)))
Надо прописать домен(ы - с www тоже) в разрешенные.
Ну и, надеюсь Вы смотрите тестовую флэшку не с локального диска)))

denis_ka 09.10.2008 09:00

Добавление домена(-ов) в разрешённые не помогло, да и как заставить каждого пользователя добавлять домены

Flash-приложение смотрю на хостинге.

Ну что ж, будем использовать getURL()

Wolsh, спасибо большое за помощь :)

Wolsh 09.10.2008 10:04

Да нет, ну зачем же) Это работает, буквально неделю назад делал проект и использовал даунлоад с файлреференс.
А что значит "каждого пользователя"? Речь о коде во флэшке. Или у Вас флэшка на одном домене качает с разных других???
Код:

System.security.allowDomain("http://domain.com");
System.security.allowDomain("http://www.domain.com");


denis_ka 09.10.2008 14:53

А-а-а, понятно! Я думал, что рёчь идёт о браузере. Теперь понятно. Попробуем ...

denis_ka 10.10.2008 09:05

А не подскажите куда именно вставить эти строчки? До объявления экземпляра объекта Object() ?

Wolsh 10.10.2008 09:59

В самом начале основного кода. Т.е. это как бы настройки всего ролика.

denis_ka 15.10.2008 14:13

Добрый день!

Цитата:

В самом начале основного кода. Т.е. это как бы настройки всего ролика.
:( Добавили
Код:

System.security.allowDomain("http://domain.com");
System.security.allowDomain("http://www.domain.com");

в самое начало и ничего не изменилось.

А может играть роли расширение файла и/или его размер?

Wolsh 15.10.2008 15:10

Размер - да, до 100 мб)
Расширение... Я, честно сказать, не знаю, что будет если в htaccess прописано открывание .mov ассоциированным плеером. Но у Вас ведь не открывается?)))
Да, еще по поводу вашей функции, возвращающей имя файла. Дело в том, что этот второй параметр - filename - вообще не обязателен. Если его не указывать, то файл будет назван в окне диалога сейв своим собственным именем автоматически)))

denis_ka 15.10.2008 16:14

1. Размер файлов до 100 Мб
2. При открытии *.mov файлов, напрямую через строку браузера, файл ассоциируется стандартным плеером. Другим словами, открывается.

Цитата:

Но у Вас ведь не открывается?
Простите, но что Вы хотили этим сказать?

По поводу функции. Понятно про необязательный второй параметр, но он же не может влиять на процесс скачивания файла.

Wolsh 16.10.2008 11:42

Хотел сказать, что при использовании fileReference у Вас файл и в плеере не открывается)
Вы простите, denis_ka, но мне больше нечего Вам сказать. У меня при соблюдении всех перечисленных правил - работает. Можете посмотреть на http://niko-story.ru (надо выбрать раздел "примерь образ" и следовать инструкциям, т.е. загрузить фотку, подвигать элементы рамки и нажать "готово", дождаться диалога сохранения и сохранить. Что там происходит - Ваша фотка отправляется на сервер (upload), там если надо подгоняются размеры и флэшка забирает ее в себя))) Вы редактируете и сохраняете результат на сервер, где он записывается в файл .jpg и запускается процесс download обратно на компьютер пользователя. Вот такой АС2))))

denis_ka 29.10.2008 15:15

Спасибо большое ещё раз за помощь Wolsh.

Решили использовать getURL(), т.к. ничего не помогает. То что это должно работать я не сомневаюсь, просто в данном конкретном случае не хочет. :)


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

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