Просмотр полной версии : как вызвать окно download как при upload
solo19770701
29.08.2008, 22:43
Всем доброго времени суток. Задался целью создать upload/download через веб сайт, что бы юзеры могли загружать картинки на сервер, а мы могли бы сгружать их от туда.
С вопросом uploada я разобрался, делаю через import flash.net.FileReference; и php скрипт. Вопрос за малым, как сделать что бы при загрузке (download) с сервера при нажатии на кнопу открывалось стандартное окно винды (точно такое же как при upload) указаной папки с файлами на сервере? Пытался найти через Google, только незнаю как запрос сделать.:eek: на upload files with Flash все что угодно только не то что нужно.
solo19770701
30.08.2008, 00:18
to MrPoma. Хай. Дело в том что мне нужно "окно" в котором я могу выделить файлы, котоыре я хочу загрузить с сервера. Жесткая привязка к именам файлов здесь не сработает -->
var fileRef:FileReference = new FileReference();
function downloadFile():void {
fileRef.download(new URLRequest("myFile.txt"), "myFile.txt");
}
fileRef.download(new URLRequest("myFile.txt"), "myFile.txt") - здесь идет привязка к файлу, а как вызвать стандартное окно винды, такое как при upload?
solo19770701
30.08.2008, 00:37
покопался в справке и нашел FileReference.browse(), FileReferenceList.browse(), но это похоже работает только с FileReference.upload. Можно ли эти методы прикрутить с download?
Как Вам вариант сделать архив из файлов?
Окно вызывает browse(), а не upload() и не download(). В последнем случае пользователь указывает, в какую директорию и под каким именем сохранить загружаемый файл.
solo19770701
30.08.2008, 05:32
to all. Ok, перефразирую вопрос. Как вызвать список файлов определенной директории на сервере с последующим выбором файла из списка и его загрузкой на компютер пользователя? О как! :away:
Вобщем после долгих исканий и читаний я пришел к этому.
import mx.controls.Button;
import mx.controls.Label;
import mx.controls.TextInput;
import mx.controls.ProgressBar;
import flash.net.FileReference;
var eventHandler:Object = new Object();
var chooseFiletoLoad:Object = new Object();
var fileRefListener:Object = new Object();
var fileRef:FileReference = new FileReference();
var fileTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif, *.png";
fileTypes.push(imageTypes);
setupInterface();
function setupInterface()
{
this.createClassObject(Label, "urlLabel", this.getNextHighestDepth(), {_x:10, _y:13});
urlLabel.text = "URL";
this.createClassObject(TextInput, "urlInput", this.getNextHighestDepth(), {_x:60, _y:10, _width:450});
urlInput.text = "здесь должно появится имя выбраного файла";
this.createClassObject(Button, "openWindowButton", this.getNextHighestDepth(), {_x:10, _y:100});
openWindowButton.label = "Download";
openWindowButton.addEventListener("click", eventHandler);
this.createClassObject(Button, "chooseFile", this.getNextHighestDepth(), {_x:10, _y:50});
chooseFile.label = "Choose File";
chooseFile.addEventListener("click", chooseFiletoLoad);
this.createClassObject(ProgressBar, "fileTransferProgressBar", this.getNextHighestDepth());
fileTransferProgressBar._x = 120;
fileTransferProgressBar._y = 50;
fileTransferProgressBar.mode = "manual";
fileTransferProgressBar.label = "LOADING %3%%";
fileTransferProgressBar._visible = false;
this.createTextField("feedbackField", this.getNextHighestDepth(), 10, 80, 400, 30);
}
fileRefListener.onOpen = function(file:FileReference)
{
feedbackField.text = "Starting file download.";
fileTransferProgressBar._visible = true;
};
fileRefListener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number)
{
feedbackField.text = "Download in progress";
fileTransferProgressBar.setProgress(bytesLoaded, bytesTotal);
};
fileRefListener.onComplete = function(file:FileReference)
{
feedbackField.text = "Download complete";
fileTransferProgressBar._visible = false;
};
fileRefListener.onIOError = function(file:FileReference)
{
feedbackField.text = "Download failed - disk error";
fileTransferProgressBar._visible = false;
};
fileRefListener.onSecurityError = function(file:FileReference)
{
feedbackField.text = "Download failed - security/permission error";
fileTransferProgressBar._visible = false;
};
eventHandler.click = function()
{
fileRef.addListener(fileRefListener);
fileRef.download(urlInput.text);
}
chooseFiletoLoad.click = function()
{
fileRef.browse(fileTypes);
fileRef.addListener(fileRefListener);
};
Из кода видно что я создал две кнопки одна идет на просмотр файлов в директории а вторая на загрузку выделеного файла, но вот беда, я на знаю как эти две кнопки связать вместе и организовать просмотр директории для выбора файла:boredom: Прикрепил основной файл, если кому интересно поковырятся.
А где Вы там нашли про сервер? FileReference.browse() позволяет выбирать локацию только на машине пользователя. А Ваш вопрос перефразировать необходимо так: "Напишите мне РНР-скрипты для загрузки-выгрузки файлов на сервере".
solo19770701
30.08.2008, 23:37
to Wolsh: я уже сам это понял. Скрипт для меня писать не надо. Разобрался с upload, разберусь и с download.
Вопрос за малым, что забить в Google для поиска. На запрос download files from serwer with Flash, выдается всякая ерунда.
Может что то типа php and Flash downlosd files, надо продолжить мои искания.
По-моему, стандартное окно для выбора файла с сервера ну никак нереально открыть - это ж сервер, а не локальный комп! Я вижу только такой вариант (хотя изврат, на мой-то взгляд))) : написать отдельный скрипт php, который будет присылать тебе список файлов в папке, а ты уже во флэше рисуй это окно, иконки файлов, и по выбору из флэша отправляешь на сервак запрос на скачивание нужного файла, а дальше уже принимаешь его fileReference.download().
не проще ли фтп использовать для таких целей?? ;)
solo19770701
03.09.2008, 06:26
to skald: нет, ftp использовать не проще. Вся идея заключается в упрощении загрузки и выгрузки файлов с сервера. Не у каждого клиента есть ftp программа, а некоторые даже такого слова не знают:bb:. Это со стороны клиентов, да и нашим менеджерам это тоже не помешало, зашли на сайт, нашли нужный файл, загрузили/посмотрели. Как я понял из мануала, флеш теоретически потдерживает до 100мб файлы.
to Maxio: я думаю, правильно мыслите товаГищ :drinks:. В целях безопасности логично создать доступ только к одной папке на сервере, прописать php что бы смотрел файлы, выдавал список файлов в папке в формате html. Ну а html можно потом с помощю flash прочитать, и как ты сказал ранее прицепить fileRef.download. Но здесь возникают две проблемы. Первая, в php я не бум-бум, так если только с помощю подсказок и хелпа. Вторая проблема - нашел я один скрипт, который как раз то, о чем мы сейчах говорим должен делать. На upload он работает хороше, но после загрузки php должен все это записать в файл и передать все это во flash, чего не происходит. Я подозреваю, или я что то не правильно сделал или у меня на серваке стоит ограничение в безопасности для php. А так как с php я не особо, то все сдесь и встало. Вобщем, скрипт я приатачил, кому интересно, попробуйте, может у вас работать будет. Я удалил документацию отутда, по размерам не пролазил. Кто хочет полуный файл, забейте в Google название сктипта, вам сразу покажут сайт разраба. Этот скрипт бесплатный, там платные еще есть, но это уже другая сказка. Вообщем вот так вот.
solo19770701
11.09.2008, 07:44
Всем доброго времени суток. Месяц спустя я нашел кое что что может помочь в организации моей задумки. Я нашел два очень простых php скрипта. Вот они
<?php
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
closedir($handle);
}
?>
он выдает сприсок файлов в папке в php такого формата "list_files2.php list_files4.php list_files.php list_files6.php list_files3.php list_files5.php 360_GI_by_Calzinger.jpg Abstract_Winter_by_Furiosa.jpg list_files7.php" проще говоря string. Второй скрипт посложнее и выдает файлы списком и как линки, тоесть при клике на файл происходит его загрузка.
Вот скрипт
<?php
$count = 0;
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {$count++;
print("<a href=\"".$file."\">".$file."</a><br />\n");
}
}
echo '<br /><br /><a href="..">Return</a>';
closedir($handle);
}
?>
так выглядит ответ
"
list_files2.php
list_files4.php
list_files.php
list_files6.php
list_files3.php
list_files5.php
360_GI_by_Calzinger.jpg
Abstract_Winter_by_Furiosa.jpg
list_files7.php
Return
"
Теперь думаю, как все это можно прикрутить во флеше к fileRef.download(urlInput.text)? :quiet:
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.