Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 11.08.2008, 02:38
CblP вне форума Посмотреть профиль Отправить личное сообщение для CblP Посетить домашнюю страницу CblP Найти все сообщения от CblP
  № 1  
Ответить с цитированием
CblP

Регистрация: Aug 2008
Сообщений: 69
Отправить сообщение для CblP с помощью ICQ
Thumbs up Форма загрузки файлов и данных POST. Flex 3 + PHP

Загрузка Файла и других данных с формы на пхп скрипт.

Задача: Написать на Flex 3 (AS 3.0) форму с несколькими тектовыми полями и с кнопкой для выбора файла.

Проблема:
нужно одновременно с файлом отправить еще и данные с формы (Имя фамилию).

Решение:
В объекте класса URLRequest, который используется для отправки файла .upload() указать в его параметре .data данные которые нужно отправить вместе с файлом.

ЗЫ Как быть если у нас нужно отправить не один а несколько файлов???

Код:

sendform.as
Код:
// ActionScript file
import flash.events.Event;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;

import mx.controls.Alert;

//
private var fileRef:FileReference = new FileReference();


private function init():void
{
	// добавляем ивент на загрузку файла
	fileRef.addEventListener(Event.COMPLETE, fileloaded);
	
	// ивент на выбор файла
	fileRef.addEventListener(Event.SELECT, fileSelected);
}

// кнопка Open file
private function openFile():void
{
	// открытие диалогового окна для выбора файла
	fileRef.browse();
}


private function fileSelected(event:Event):void
{
	// пишем в поле имя файла
	file_name.text = event.target.name.toString();
}

// отправка данных с формы
private function SendData():void
{
		
	// объект класса с помощью которого мы пердадим файл и данные на пхп файл
	var url_request:URLRequest = new URLRequest();
	
	// указываем адресс куда будут  передаватся данные
	url_request.url = "http://[host]/php/test/resive_data.php";
	
	// устанавливаем метод отправки POST
	url_request.method = URLRequestMethod.POST; // "POST";
	
	// задаем данные с формы в постовые переменные
	// как вариант var variables:URLVariables = new URLVariables("name=Franklin");
	url_request.data = new URLVariables();
	url_request.data.first_name = first_name.text;// = variables;  //= { id:"777"};
	url_request.data.last_name = last_name.text;

	// отправляем фай с помощью url_request в котором мы указали данные с формы, и по этому они все уходят вместе
	// второй параметр "picture" - это название в ассоциативом массиве $_FILES (для php) 
	// елемента в котором будут находится даные файла - $_FILES ['picture'] -  тут будет файл отправленный
	fileRef.upload(url_request, "picture");
}


// выполняется при событии файл загрузился
private function fileloaded(event:Event):void
{
	Alert.show("File and data loaded!!!");
}

sendfom.mxml
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init();">
	
	<mx:Label x="20" y="38" text="First Name"/>
	<mx:TextInput x="92" y="36" id="first_name"/>
	<mx:Button x="168" y="92" label="Select File" id="select_file" click="openFile();"/>
	<mx:Button x="20" y="122" label="Send Data" id="send_data" click="SendData();"/>
	<mx:Script source="sendform.as" />
	<mx:TextInput x="92" y="66" id="last_name"/>
	<mx:Label x="20" y="68" text="Last Name"/>
	<mx:Label x="47" y="94" text="File"/>
	<mx:TextInput x="92" y="92" width="68" enabled="false" id="file_name"/>
</mx:Application>

Получающий пхп файл. Они пишет ифо о полученных данных, хотя может перемещать файл в в какуюто директорию, и сохранять под именем id записи данных которые пришли вместе с файлом с формы и которые он же записал в БД.
resive_data.php
Код:
<?php

$fpp = fopen('code.txt', 'w');

fwrite($fpp, 'Resive data:
');

fwrite($fpp, "In _POST[] array:
");
fwrite($fpp, 'first_name: ' . $_POST['first_name'] . '
');
fwrite($fpp, 'last_name: ' . $_POST['last_name'] . '
');

fwrite($fpp, "In _FILES[] array:
");
fwrite($fpp, "File data is in key 'picture' " . $_POST['last_name'] . '
');
$csv = '_FILES[] array keys: 
';
foreach(array_keys($_FILES) as $title)
        {
            // array_keys percurs the title of each vector 
            $csv .= $title . '
            ';
            //$csv .= '  ---  ';
        }
fwrite($fpp, $csv);
fclose($fpp);

?>
В итоге пхп создает примерно такой файлик:
Цитата:
Resive data:
In _POST[] array:
first_name: Bob
last_name: Pitterson
In _FILES[] array:
File data is in key 'picture' dsfsdf
_FILES[] array keys:
picture


Последний раз редактировалось CblP; 11.08.2008 в 18:32.
Создать новую тему   Часовой пояс GMT +4, время: 21:44.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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