PDA

Просмотр полной версии : всё же хочется научиться FileReference !!!!


Evgan
30.12.2008, 02:24
приветствую

По ссылке http://www.flashforum.ru/index.php?showtopic=192&pid=1331&mode=threaded&start=#entry1331 , любезно предоставленноей Denis Doroshko, спасибо ему за это огромное, предлажили пример (файл прикреплён) закачки картинок на сервер, в котором код AS предлагают заменить (по ссылки вы это сможите увидеть) на нижеприведённый :

код AS_______________________________________


import flash.net.FileReference;

var listener:Object = new Object();

listener.onSelect = function(selectedFile:FileReference):Void {

statusArea.text += "Попытка загрузки " + selectedFile.name + "\n";

// место нахождеие твоего php файла
selectedFile.upload("uploadFile.php");
};

listener.onOpen = function(selectedFile:FileReference):Void {
statusArea.text += "Открытие " + selectedFile.name + "\n";
};

listener.onComplete = function(selectedFile:FileReference):Void {

statusArea.text += "Загружается " + selectedFile.name + " в флэшку\n";

imagesCb.addItem(selectedFile.name);

imagesCb.selectedIndex = imagesCb.length - 1;

downloadImage();
};

var imageFile:FileReference = new FileReference();
imageFile.addListener(listener);

uploadBtn.addEventListener("click", uploadImage);
imagesCb.addEventListener("change", downloadImage);
imagePane.addEventListener("complete", imageDownloaded);

function imageDownloaded(event:Object):Void {
if(event.total == -1) {
imagePane.contentPath = "Message";
}
}

function downloadImage(event:Object):Void {
imagePane.contentPath = "images/" + imagesCb.value;
}

// показывает тип вайлов которые можно загружать
function uploadImage(event:Object):Void {
imageFile.browse([{description: "Катринки", extension: "*.jpg;*.gif;*.png"}]);
}

________________________________________

конешне же и код php придложили следующий:


код PHP______________________________________


<?php
$MAXIMUM_FILESIZE = 1024 * 200; // 200KB
$MAXIMUM_FILE_COUNT = 10; // keep maximum 10 files on server
echo exif_imagetype($_FILES['Filedata']);
if ($_FILES['Filedata']['size'] <= $MAXIMUM_FILESIZE) {
move_uploaded_file($_FILES['Filedata']['tmp_name'], "./temporary/".$_FILES['Filedata']['name']); !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$type = exif_imagetype("./temporary/".$_FILES['Filedata']['name']);
if ($type == 1 || $type == 2 || $type == 3) {
rename("./temporary/".$_FILES['Filedata']['name'], "./images/".$_FILES['Filedata']['name']);!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
} else {
unlink("./temporary/".$_FILES['Filedata']['name']);
}
}
$directory = opendir('./images/');
$files = array();
while ($file = readdir($directory)) {
array_push($files, array('./images/'.$file, filectime('./images/'.$file)));
}
usort($files, sorter);
if (count($files) > $MAXIMUM_FILE_COUNT) {
$files_to_delete = array_splice($files, 0, count($files) - $MAXIMUM_FILE_COUNT);
for ($i = 0; $i < count($files_to_delete); $i++) {
unlink($files_to_delete[$i][0]);
}
}
print_r($files);
closedir($directory);

function sorter($a, $b) {
if ($a[1] == $b[1]) {
return 0;
} else {
return ($a[1] < $b[1]) ? -1 : 1;
}
}
?>

_________________________________________

теберь ближе к делу: НЕ РАБОТАЕТ!!! +(
с AS всё вроде бы разобрался и понят: строкой selectedFile.upload("uploadFile.php") вызываем код php c одновременной передачей ему информации о выбранном файле, которая в php заносится в супер пуперский массив $_FILES.

НО с PHP не так всё понятно, хоть похожей штукой имел дело, правда в том случаи из html вызывался php, но там у меня всё получилось и работает (каму интересно, в архиве исходники), а именно, вызывают подозрения правельности написания и надобности указывания места для файлов на сервере: "./temporary/" и "./images/" ( в строках где в конце я восклицательные знаки наставил+)), да и вся это систма move_uploaded_file с последующим rename (всё теже строки с !!!!!!!!!! ) вызывает подозрение, так как в том же примере с HTML достаточно одной строчки простой и локаничной :

copy($_FILES["$cc1"]["tmp_name"],"666.JPG"), что бы закачиваемый файл оказался в коталоге, откудо php вызывается,и имел имя 666.

В ОТСУСТВИИ ТОЛКОЙ ЛИТЕРАТУРЫ, МНЕБЫ БЫЛО БЫ НАМНОГО УДОБНЕЕ РАЗБИРАТЬСЯ С ЭТОЙ ВЕЩЬЮ ЕСЛИ БЫ ИСХОДНИК БЫЛ РАБОЧИЙ+(
если кто им может одарить, то буду весьма благодарен.

спасибо за внемание+)

KiL33
30.12.2008, 11:23
Там по идее ещё нужно мувик создать обозвать его месагой(message).
Я вообще не знаю людей у кого бы этот пример от adobe работал.
Если такие люди есть отзовитесь!)))
Вот рабочий пример

iNils
30.12.2008, 11:34
1. Название темы не раскрывает сути проблемы
2. Раздел выбран не верно. PHP часть обсуждается в "Серверные технологии и Flash"
3. В названии, а также в тексте, одного восклицательного знака достаточно. КРИЧАТЬ также не надо, особенно в главном вопросе, это менее читабельно. Для выделения важных моментов есть подчеркивание.