![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 21.04.12]
Регистрация: Jan 2010
Сообщений: 25
|
Откопипастив откуда только можно сделал код, при помощи которого на сервер грузится картинка, после чего она загружается во флеш. В следствии ненадобности ее на самом сервере, ее необходимо удалить, однако куда вписать код file.upload("del.php") или как его вписать грамотно чтобы он работал в функции lst.onLoadInit = function(tgt:MovieClip) я так и не понял, вот сам код
System.security.allowDomain("http://localhost/"); import flash.net.FileReference; var listener:Object = new Object(); var fileRef:FileReference = new FileReference(); fileRef.addListener(listener); var loader:MovieClipLoader = new MovieClipLoader(); var lst:Object = new Object(); loader.addListener(lst); //var cnt:MovieClip = _root.createEmptyMovieClip('container', 0); cnt._visible = false;//чтобы не мелькал lst.onLoadInit = function(tgt:MovieClip) { //file.upload("del.php"); output = tgt._width + " " + tgt._height; //загрузка картинки завершена if ((tgt._width > (850 - 150)) || (tgt._height > 450)) { var xscale:Number = ((850 - 150) / tgt._width); var yscale:Number = (450 / tgt._height); trace(xscale * tgt._width + " " + yscale * tgt._height); if (xscale < yscale) { //tgt._xscale = tgt._yscale = xscale; tgt._width = xscale * tgt._width; tgt._height = xscale * tgt._height; } else { //tgt._xscale = tgt._yscale = yscale; tgt._width = yscale * tgt._width; tgt._height = yscale * tgt._height; } } // center bitmap tgt._x = 150 + Math.abs(tgt._width - (850 - 150)) / 2; tgt._y = Math.abs(tgt._height - 450) / 2; }; listener.onSelect = function(file:FileReference):Void { //trace("onSelect: " + file.name); file.upload("code.php"); output = "Select: " + file.name; }; listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void { output = Math.floor((bytesLoaded / bytesTotal) * 100) + "%"; }; listener.onComplete = function(file:FileReference):Void { output = "Complete: " + file.name; var cnt:MovieClip = _root.createEmptyMovieClip('container', 0); loader.loadClip(file.name,cnt); //file.upload("del.php"); }; but1.onPress = function() { cnt.unloadMovie(); fileRef.browse([{description:"Image Files", extension:"*.jpg;*.gif;*.png"}]); }; еще вопрос как загружать файлы с названием на русском или как их не загружать(чтобы php не копировал их на сервер) |
|
|||||
|
Модрон-ветеринар
|
В любое место в onLoadInit. Картинка же уже загружена, так? Об этом нам как раз и сообщает onLoadInit. Всё, что выполняется внутри него, относится к уже загруженному содержанию, поэтому картинку с сервера можно удалять.
Цитата:
Только надо будет учесть это в loadClip.
__________________
Идите первым! Последний раз редактировалось mooncar; 29.11.2011 в 11:02. |
|
|||||
|
[+1 21.04.12]
Регистрация: Jan 2010
Сообщений: 25
|
Цитата:
... lst.onLoadInit = function(tgt:MovieClip) { file.upload("del.php"); output = tgt._width + " " + tgt._height; //загрузка картинки завершена if ((tgt._width > (850 - 150)) || (tgt._height > 450)) { ... ну а если в конкретный момент загрузит файл не 1 человек,а много => у многих будет ошибка, у кого то загрузит не их файл,а чей-то еще |
|
|||||
|
Модрон-ветеринар
|
Цитата:
unlink("./".$_FILES['Filedata']['name']); - работать не будет, ведь суперглобальный массив $_FILES существует только в рамках POST-запроса на закачку. В такой ситуации нужно уникальное имя - ведь где гарантия, что одновременно, как вы говорите, кто-то не загрузит файл с именем, наприимер 1.jpg ? Если лень возится с генерированием уникального имени, например, на основе идентификатора сессии, то можно попробовать сделать так: Не делайте move_uploaded_file, а загружайте сразу же тот временный файл, который создает после закачки сервак. Попробуйте забирать обратно файл $_FILES['Filedata']['tmp_name']. Кстати, тогда и удалять его нет необходимости, это работа сервера, который сам его и удалит по прошествии некоторого времени.
__________________
Идите первым! Последний раз редактировалось mooncar; 29.11.2011 в 14:32. |
|
|||||
|
[+1 21.04.12]
Регистрация: Jan 2010
Сообщений: 25
|
Цитата:
Последний раз редактировалось lopster; 29.11.2011 в 14:46. |
|
|||||
|
Модрон-ветеринар
|
Например
var lv:LoadVars = new LoadVars(); var rlv:LoadVars= new LoadVars(); lv.todel = 'url файла на удаление'; lv.sendAndLoad('del.php', rlv, 'POST' ); или php: Идея понятна? Добавлено через 3 минуты Насчет использования $_FILES['Filedata']['tmp_name']. Возвращать URL временного файла после закачки на сервер флешке. А она уже загрузит именно его.
__________________
Идите первым! Последний раз редактировалось mooncar; 29.11.2011 в 14:43. |
|
|||||
|
[+1 21.04.12]
Регистрация: Jan 2010
Сообщений: 25
|
Цитата:
listener.onComplete = function(file:FileReference):Void { output = "Complete: " + file.name; var cnt:MovieClip = _root.createEmptyMovieClip('container', 0); loader.loadClip(file.name,cnt); file.upload("del.php"); }; Цитата:
Сделал так, все рабоетает, спасибо. var lv:LoadVars = new LoadVars(); var rlv:LoadVars= new LoadVars(); lv.todel = 'url файла на удаление'; lv.sendAndLoad('del.php', rlv, 'POST' ); тему можно закрыть Последний раз редактировалось lopster; 29.11.2011 в 15:02. |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|