Форум 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)
-   -   Замена имени у загружаемого на сервер файла (http://www.flasher.ru/forum/showthread.php?t=149173)

Mulin 20.01.2011 13:05

Замена имени у загружаемого на сервер файла
 
Парни такое дело. Нарисовал простенький аплоадер на сервак
Код AS1/AS2:

import flash.net.FileReference;//импортирую класс
var perem:FileReference = new FileReference();//создаю его экземпляр
var slush:Object = new Object();//слушатель
perem.addListener(slush);..аттачу слушатель
browse_btn.clickHandler = function()//открываем папку
{
        perem.browse([{description:"JPEGs", extension:"*.JPG;*.jpg"}]);
};
upload_btn.clickHandler = function()//собсно грузим картинко
{
        perem.upload("upload.php");
};

Ничего сложного все просто.
Пэхапэшник такой же несложный
PHP код:

$filename $_FILES['Filedata']['name']; //имя файла
$filetmpname $_FILES['Filedata']['tmp_name'];    //адрес tmp
$fileType $_FILES["Filedata"]["type"]; //тип файла
$fileSizeMB = ($_FILES["Filedata"]["size"] / 1024 1000); //размер файла
move_uploaded_file($_FILES['Filedata']['tmp_name'], "images/".$filename); //сохраняем файл в папку images 

Все работает красиво. Но нужно отсылать пэхапэшнику не родное имя файла, а то, которое я введу. Я даже не знаю с какой стороны подойти к этому вопроссу. Слышал что у FileReference есть свойство имени, но только для чтения. Парни помогите решить проблему...

mooncar 20.01.2011 13:13

В AS:
Код AS1/AS2:

var fileneme:String = 'image1';
 
upload_btn.clickHandler = function()//собсно грузим картинко
{
        perem.upload('upload.php?filename=' + fileneme);
};

В PHP:
PHP код:

$filename $_GET['filename']; //имя файла
...
move_uploaded_file($_FILES['Filedata']['tmp_name'], "images/".$filename); //сохраняем файл в папку images 


А лучше POST
Код AS1/AS2:

upload_btn.clickHandler = function()//собсно грузим картинко
{
        perem.postData = file_name.text ; //допустим, вы ввели желаемое имя в поле file_name (не про забыть валидацию!)
        perem.upload('upload.php');
};

PHP код:

$filename $_POST['filename']; //имя файла 
...
move_uploaded_file($_FILES['Filedata']['tmp_name'], "images/".$filename); //сохраняем файл в папку images 

Во втором варианте используем свойство FileReference.postData.
Я правда GET-ом такое делал последние разы, но ИМХО, POST-ом лучше.

И самое главное, по поводу "Слышал что...". Если что-то нужно, используйте хелп, я например, туда всегда хожу, если необходимость и ощущение, что нужное свойство и метод у класса есть. Очень много хорошего там найдете, включая примеры. :)

Mulin 20.01.2011 13:53

Вложений: 1
Чет не то не то не работает, где то я чето накосячил наверно.
Можно вас попросить глянуть код, и еще вопрос, чем post лучше?

mooncar 20.01.2011 17:46

FLA для CS3 сохраните.

Mulin 20.01.2011 18:38

А каким образом это влияет? я же в любом случае компилю проект

mooncar 20.01.2011 19:26

Это влияет на то, что не у всех файл открывается, значит помочь вам может меньшее количество людей.
У меня старше CS3 файлы не открываются.

Mulin 20.01.2011 20:03

Вложений: 1
Ой простите не понял вопросса)) персохранил
атож я уже стал переосмысливать весь свой подход к флешу)))

mooncar 20.01.2011 21:03

1. Ошибся я там. Надо, например, так:
Код AS1/AS2:

upload_btn.clickHandler = function()
{
        perem.postData = 'filename=' + file_name.text  + '.jpg'; //собственно имя переменной для POST не было указано
        perem.upload('upload.php');
};

2. Проверьте также права доступа у директории на запись.

С учетом (1 - 2) все должно заработать.

POST, например, хорош тем, что не через адресную строку передаются данные.

Mulin 20.01.2011 21:24

Ой спасибо, дружище, выручили в очередной раз. Премного благодарен

Добавлено через 2 минуты
В случае с не POST это небезопасно?

mooncar 20.01.2011 21:34

Данные отловить можно и POST, что и делается, просто так целесообразней передавать данные. Через адресную строку передать несколько страниц текста, например, как-то не очень.
POST не кэшируется.
Почитайте материалы, в чем отличия, я привел не самые основные нюансы.


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

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