![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Перерыл фак, но че-то не соображу никак...
Мне нужно аплоадить файл (JPG) на сервер с тем, чтоб потом его загрузить во флешку. С самим аплоадом все понятно. Сразу после загрузки файла на страницу(во флешку), файл должен автоматически быть удален. Я вижу 2 пути. 1-й. После аплоада файл остается во временной папке сервера и странице с формой аплоада отправляется переменная временным именем и адресом файла, с которого флешка его собсно и грузит. При этом я не понимаю как передать данные странице с формой аплоада (это нужно без перезагрузки страницы). Натолкните где искать.... не уверен, что браузеру будет доступна папка с временными файлами сервера.... 2-й. После аплоада файл перемещается в нужную мне папку на сервере, откуда он грузится во флешку на странице. Затем после загрузки, файл на сервере должен умереть, команду я могу дать только из флешки. Вопрос - как передать команду скрипту на сервере (с адресом файла) при этом не должна перегружаться страница с флешкой, и никакие новые окна открываться не должны, из самой флешки я могу запустить любой javascript на странице. (тоесть мне совсем не понятно как запустить скрипт на сервере без отражения его работы в браузере пользователя) |
|||
|
||||
| Blaga |
|
|||
![]() ЛамМер++ ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 15.11.2005 Где: г. Иркутск Репутация: 2 Всего: 4 |
Всмысле тебе нужно удалить файл который во временной папке? Тогда тебе нужна функция
-------------------- |
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
rol, во флеш существует что-нибудь вроде AJAX? если да, то можно выполнить запрос вроде del_img.php?img=path2image.
На худой конец, можно создать на страничке iframe размерами 0х0 из которого потом и выполнить запрос. PS. Лично со Flash не работал, поэтому все вышенаписанное только мои предположения. -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| rol |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Blaga: Не, из временной папки файл удалится сам, мне нужно успеть до этого момента загрузить этот файл во флешку на странице, но вроде как это не получится, так как временный файл удаляется сразу после аплоада, если он не перемещен куда я хочу, поправте, если я не прав....
С анлинком проблема - файл не удаляется вроде бы, если он используется, в моем случае у меня не получилось, сразу после загрузки флешка дает команду на удаление файла на сервере, но он не удаляется, так как используется флешкой. Хотя я не понимаю почему - файл загружен, обращение к нему из браузера завершено.... По идее должно все удалиться... Из флешки вызываю переход в файл и методом гет передаю путь к файлу.
Может ошибка в скрипте на сервере?
Но в любом случае, мне нужно запустить этот скрипт каким-то методом, без появления окна браузера, нужно передать имя файла скрипту на сервер, чтоб он там сам выполнился, но в браузере пользователя ничего не отображалось, вот это я не знаю как осуществить (Нужно у хостера уточнить, может у меня анлинк вообще заблокирован.... ) Alex13 : насчет ифрейма мысль, спасибо, попробую, главное чтоб не было перегрузки страницы. А флеш-сила |
||||
|
|||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Хм, скрипт на сервере ругался на абсолютный путь в переменной.
Если передавать относительный, то проблем не возникает, осталось только в ифрейме все это оформить. Другой вопрос - как запустить этот скрипт уделения файла, если пользователь закрыл окно с флешкой во процессе загрузки файла с сервера (а не при аплоаде)? Кажется где-то читал про событие, но вроде бы оно относится к аплоуду.... Подскажите неучу |
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
можно отсылать запрос на удаление сразу после начала, а в скрипте вставить задержку пропорциональную размеру файла, чтобы тот успел загрузиться.
Или можно просто не заморачиваться со всеми этими удалениями, а просто раз в сутки с помощью Cron'а запускать скрипт, который быдет удалять из кеша все картинки разом. -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Alex13, спасибо за наводку на ифрейм, все получилось, причем универсально.
Ифрейму меняем src javascript'ом на ссылку на скрипт удаления, и гетом к нему цепляем имя убиваемого файла. Осталось обработать события закрытия окна до события онкомплит флешки аплоада (сделано во флеше из-зи красивости прогрессбара аплоада), почему-то происходит задержка этого события на несколько секунд, ну тут тот-же javacsript. Ну и осталось обработать событие закрытия окна до окончания загрузки файла в основную флешку(не уверен, что по закрытию окна сработает ифрейм, окно-то закрывается... в общем проверю) И от крона никуда не деться, но это уже не критично. Задержка удаления может критично отразиться на работе сервака, не хочется его перегружать, количество обращений может быть большим), да и пропорциональность размеру файла в этом случае не совсем корректна, скорость загрузки-то у всех разная... все-таки лучший выход - обработка событий в больших временных интервалах на стороне клиента, а остальное уже в разряд ошибок и убивать по крону, это поможет экономить место на сервере |
|||
|
||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
УРА! Все получилось.
Итак, описываю процесс. Дано: страница с флешкой, в которую нужно грузить фото пользователя, при этом фото должно на сервере после загрузки во флешку удаляться. Форма аплоада файла сделана во флешке(для красоты) и на отдельной странице, вызываемой из главного окна. Задача - чтоб усе работало. Сделал. 1. Аплоад и загрузка во флешку. Ну, вызов окна ява-скриптом и загрузка формы аплоада думаю всем понятна, если что, спрашивайте отдельно. Тонкость - чтоб не передавать имя файла, для переименовки его на сервере в нужное мне для загрузки его во флешку, я на сервере называю файл его размером в байтах и сохраняю в заданную заранее папку (вероятность совпадений размеров файлов разных пользователей очень мала, тем более что файлы удаляются). Размер файла, так же известный мне на клиентской стороне я передаю в виде переменной в основную флешку и она грузит нужный файл с сервера. Затем по команде флешки вызывается ява-скрипт на главной странице, который присваивает ифрейму, заданному с нулевыми размерами на главной странице адрес скрипта удаления файла на сервере, с прицепленным к адресу методом ГЕТ переменной с именем файла, который нужно удалить. таким образом цепочка замкнулась, все прекрасно работает. 2. Обработка доп. событий. Их у нас три(значительные по времени когда пользователь успевает совершить какое-либо действие). а. Собственно если пользователь не дождется аплоада файла на сервер. В этом случае файл и не сохранится на сервере, а флешка аплоада обрабатывает все стандартные в этих случаях события типа cancelи прочие... ничего делать тут не нужно. б. Если пользователь закрывает окно с формой аплоада до его автоматического закрытия (которое выполняется при получении флешкой аплоада команды онКомплит с сервера. Из практики - существует значительная временная пауза, пропорциональная размеру файла между реальным аплоадом файла и событием его окончания, получаемое флешкой от сервера(событие onComplite во флешке), вот эту паузу и обрабатываем). Обрабатываем это событие просто - в страницу аплоада встраиваем ифрейм, из флешки, по достижении прогрессбаром 100%, тоесть после реального аплоада, шлем переменную с именем файла в javascript страницы аплоада. По событию onUnload тега BODY страницы аплоада, в случае насильственного закрытия этого окна после реального аплоада файла но до получения команды с сервера, ифрейму присваиваем адрес скрипта удаления файла и к нему ГЕТом цепляем имя файла. Таким образом, если пользователь не дождется закрытия этого окна, а следовательно начала загрузки файла в основную флешку на главной странице, файл не загрузится во флешку и удалится с сервера. в. Если пользователь дождался аплоада и начала загрузки файла в основную флешку, но не дождался окончания этой загрузки, по аналогии с вышеописанным событием удаляем файл с сервера, по событию onUnload уже главной страницы. Тоесть также встраиваем ифрейм и ему назначаем адрес скрипта удаления файла с именем файла в хвосте. Вот собсно и все... Описал логику, может кому и пригодится, если нужна будет кому-то помощь, пишите на мыло, редко здесь бываю... |
|||
|
||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
UPD оказалось, что все работает корректно только на шустром компьютере, на 2-х гигарцовом не успевает отработаться скрипт передачи в ифрейм ссылки на удаляющий серверный скрипт по принудительному закрытию окна. Так что выход- только удаление по крону неудаленных корректно файлов.
|
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
rol, и еще зависит от толщины канала.
-------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Да, даже на adsl 1 мегабит не работает, так как у этой технологии исходящая скорость как раз ниже входящей в несколько раз...
Кстати, заметил такую вещь - флешка в форме аплоада не дает закрыться окну даже принудительно, оно просто подвисает до события onComplete, но при этом ни на какие скрипты страница не реагирует |
|||
|
||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
Есть еще один вариант контроля дополнительных событий - это запустить в родительском окне скрипт опроса дочернего окна с формой аплоада, и таким образом отслеживать ход выполнения аплоада файла на сервер и загрузку во флешку по изменению заданных переменных по нужным событиям.
Причем показывать один общий прогрессбар на весь процесс от начала аплоада и до конца загрузки файла во флешку, таким образом можно учесть вообще практически все события, а так как очень быстро закрыть 2 окна браузера невозможно, то скрипт удаления файла с сервера успеет в одном из окон выполниться в случае нарушения работы скрипта опроса. Вот только остается вопрос ресурсоемкости такого скрипта... и как-то замороченно это.... но попробую |
|||
|
||||
| Eugene_Bond |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 3.9.2006 Репутация: 1 Всего: 4 |
а зачем флешке дергать жабаскрипт, который будет в ифрейме дергать сервер с параметрами, если флешка сама может дернуть сервер с теми же параметрами?
|
|||
|
||||
| rol |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 24.2.2005 Репутация: нет Всего: нет |
А как? Можно пример на AS?
Если использовать getURL то открывается окно, от чего как раз и нужно уйти, с этого-то все и началось.... Возможно я просто не знаю другого способа... подскажите, если не сложно, и еще, как в этом случае с помощью флеша отследить закрытие окна и удалить в этом случае файл с сервера? Это сообщение отредактировал(а) rol - 22.12.2006, 14:27 |
|||
|
||||
| Alex13 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 280 Регистрация: 30.12.2005 Где: Новосибирск Репутация: нет Всего: 1 |
rol, это мысль. В родительском окне вы пытаетесь достучаться до дочернего с флешкой, а как только не получится, отсылаете запрос на удаление картинки. Правда, при этом может быть глюк, если родительское окно закрыть, но тут уже ничего не поделаешь...
Да, а вы не могли бы объяснить, зачем вообще все эти ухищрения нужны? Может мы сможем придумать кардинальное решение? -------------------- Самая страшная ошибка - это ошибка, не имеющая явных причин и конкретных последствий. Антисоциальный блог. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |