Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2012, 20:00
Интересующийся
Отправить личное сообщение для frutality Посмотреть профиль Найти все сообщения от frutality
 
Регистрация: 30.08.2012
Сообщений: 26

Передача данных из Uploadify в php
Здравствуйте, уважаемые форумчане.

Речь пойдет о плагине для jQuery - Uploadify (мультизагрузка файлов на связке JS + SWF + PHP).

Установлена свежая (3.2) версия Uploadify и jQuery 1.5.2.

Задача: вместе с загрузкой нескольких файлов отправлять в php-скрипт какие-то данные (скажем, текстовую переменную). Значение этой переменной зависит от действий пользователя на странице и не может быть известно заранее (ниже объясню, почему это важно).

Для решения этой, казалось бы, простой задачи в плагине предусмотрен параметр formData:
$(document).ready(function() {
      $('#file_upload').uploadify({
        'swf'  : 'uploadify/uploadify.swf',
        'uploader'    : 'uploadify/uploadify.php',
        'formData'      : {'someKey' : 'someValue'}
      });
    });


В скрипте uploadify.php пишем одну единственную строку:
echo $_POST['someKey'];

Результат - ожидаемый, скрипт вернет "someValue".

Теперь самое интересное. Вот пользователь произвел какие-то действия и значение переменной someKey необходимо изменить. В документации по uploadify сказано следующее: "If you plan on setting these values dynamically, this should be done using the ‘settings’ method in the onUploadStart event" (если вы планируете менять эти значения динамически, следует использовать метод 'settings' в событии onUploadStart). И даже приведен пример, где после строки с formData добавлен обработчик события onUploadStart:
$(document).ready(function() {
      $('#file_upload').uploadify({
        'swf'  : 'uploadify/uploadify.swf',
        'uploader'    : 'uploadify/uploadify.php',
        'formData'      : {'someKey' : 'someValue'},
        'onUploadStart' : function(file) {
            $("#file_upload").uploadify("settings", "someKey", "Новое значение");
        } 
      });
    });


Принимаем значение скриптом uploadify.php и видим старое значение ("someValue")! Определенное при объявлении formData, но никак ни при onUploadStart!

Закрадываются мысли: а может, там ничего не переопределилось? Дописываем старый добрый alert:
$(document).ready(function() {
      $('#file_upload').uploadify({
        'swf'  : 'uploadify/uploadify.swf',
        'uploader'    : 'uploadify/uploadify.php',
        'formData'      : {'someKey' : 'someValue'},
        'onUploadStart' : function(file) {
            $("#file_upload").uploadify("settings", "someKey", "Новое значение");
            alert($("#file_upload").uploadify('settings', 'someKey'));
        } 
      });
    });


И alert выводит "Новое значение", как и должно быть. А через доли секунды php-скрипт возвращает нам "someValue"

Как же быть, помогите пожалуйста, как же мне передать вместе с загружаемыми файлами какие-нибудь данные?

Желательно в пределах uploadify или просто средствами jQuery, но если вы знаете очень хороший аналог uploadify, то напишите его название в этой теме, пожалуйста.

Заранее благодарю.
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2012, 20:31
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

*оффтоп:
есть попроще плагин http://malsup.com/jquery/form/#file-upload
Ответить с цитированием
  #3 (permalink)  
Старый 31.08.2012, 06:56
Интересующийся
Отправить личное сообщение для frutality Посмотреть профиль Найти все сообщения от frutality
 
Регистрация: 30.08.2012
Сообщений: 26

О, спасибо, посмотрю этот вариант, если решения с uploadify пока не предвидится
Ответить с цитированием
  #4 (permalink)  
Старый 22.10.2012, 17:45
Новичок на форуме
Отправить личное сообщение для strelcov_a_a Посмотреть профиль Найти все сообщения от strelcov_a_a
 
Регистрация: 22.10.2012
Сообщений: 2

Для версии 3+
'onUploadStart' : function(file) {
$("#file_upload").uploadify("settings", 'formData',{"someKey": $('input[name="user_login"]').attr('value')})
}

ну второй параметр соответственно может быть любым, я передал значения из какого либо инпута
Ответить с цитированием
  #5 (permalink)  
Старый 15.04.2016, 19:00
Новичок на форуме
Отправить личное сообщение для Sleeve Посмотреть профиль Найти все сообщения от Sleeve
 
Регистрация: 03.02.2014
Сообщений: 3

Как через uploadifive передать файл, который формируется на странице пользователем и обратно получить ссылку на него?
Ответить с цитированием
  #6 (permalink)  
Старый 19.04.2016, 04:58
Новичок на форуме
Отправить личное сообщение для def38rus Посмотреть профиль Найти все сообщения от def38rus
 
Регистрация: 18.04.2016
Сообщений: 7

Сообщение от Sleeve Посмотреть сообщение
Как через uploadifive передать файл, который формируется на странице пользователем и обратно получить ссылку на него?
вот кусок из функции:
$('#file_upload').uploadify({
'formData'     : {
'method'   : 'post',
'dataType': "text", 
'timestamp' : '<?php echo $timestamp;?>',
'token'     : '<?php echo md5('unique_salt' . $timestamp);?>' },
'auto'     : false,
 'swf'      : 'uploadify.swf',
 'uploader' : 'uploadify.php',
// .....
 'onUploadComplete' : function(data) {
   /// здесь получить из 'uploadify.php'
			   	                 }

           });

в файле uploadify.php все операции по загрузке файла и прочее...
результат вернуть из него html data ..
ну или к примеру, вот часть кода из него:
$targetFolder = '/files/'; // каталог назначения загруженных файлов
$verifyToken = md5('unique_salt' . $_POST['timestamp']);
if (!empty($_FILES) && $_POST['token'] == $verifyToken) {
	$tempFile = $_FILES['Filedata']['tmp_name'];
	$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
	// проверка типа файла
	$fileTypes = array('jpg','jpeg','docx','doc','xlsx','xls','pdf','ppsx','pptx','ppt','zip','7z','rar','avi','mpg','mpeg','exe','msi'); // разрешенные расширения 
	$fileParts = pathinfo($_FILES['Filedata']['name']);
  	$file_ext  = $fileParts['extension'] ; //расширение загружаемого файла
    $filename = md5(microtime()); //генерация нового имени
    $new_file = $filename.'.'.$file_ext; 
   	$targetFile = rtrim($targetPath,'/') . '/' . $new_file; //переименованный файл подготовлен
	if (in_array($fileParts['extension'],$fileTypes)) {
		move_uploaded_file($tempFile,$targetFile);      // если тип файла разрешен - заливаем
		echo '1'; // ключ выполненной операции
$endurl='http://'.$_SERVER['SERVER_NAME'].$targetFolder.$new_file; //сформировал URL загруженного файла для браузера
}

Последний раз редактировалось def38rus, 19.04.2016 в 05:10.
Ответить с цитированием
  #7 (permalink)  
Старый 20.04.2016, 05:50
Новичок на форуме
Отправить личное сообщение для Sleeve Посмотреть профиль Найти все сообщения от Sleeve
 
Регистрация: 03.02.2014
Сообщений: 3

Сообщение от def38rus
def38rus
Огромное спасибо за сообщение, но я так и не понял куда засунуть данные из переменной во фронте.
Ответить с цитированием
  #8 (permalink)  
Старый 20.04.2016, 11:34
Новичок на форуме
Отправить личное сообщение для def38rus Посмотреть профиль Найти все сообщения от def38rus
 
Регистрация: 18.04.2016
Сообщений: 7

получить $endurl ?
да любым ajax методом..
но есть нюанс
'onUploadComplete' : function(data) должно вернуть единицу как подтверждения выполнения операции загрузки файла.
я писал, для своих целей, запись этого значения в БД, а на функцию загрузки файла навешивал запрос к БД и вывод оттуда инфы в див..
вариантов много...
Ответить с цитированием
  #9 (permalink)  
Старый 20.04.2016, 16:25
Новичок на форуме
Отправить личное сообщение для Sleeve Посмотреть профиль Найти все сообщения от Sleeve
 
Регистрация: 03.02.2014
Сообщений: 3

Сообщение от def38rus
получить $endurl ?
Нет.
uploadifive работает с input-file, а у меня содержимое файла формируется на странице самим пользователем. Они находятся в переменной js. Отправка файла через input-file и получение ссылки из файлохранилища уже настроенно. Но мне нужно как-то подставить данные из переменной вместо input-file.
Ответить с цитированием
  #10 (permalink)  
Старый 22.04.2016, 03:54
Новичок на форуме
Отправить личное сообщение для def38rus Посмотреть профиль Найти все сообщения от def38rus
 
Регистрация: 18.04.2016
Сообщений: 7

Сообщение от Sleeve Посмотреть сообщение
.... у меня содержимое файла формируется на странице самим пользователем. Они находятся в переменной js. ..... Но мне нужно как-то подставить данные из переменной вместо input-file.
не совсем понял.. как пользователь формирует содержимое файла? что за файл, какого формата? пример можно?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Передача данных из JS в PHP - что не так? Rokugan Общие вопросы Javascript 16 30.09.2011 18:52
Передача данных в Multiple Selection trans ExtJS 2 13.07.2011 09:45
Передача данных из формы Eugene Общие вопросы Javascript 4 15.12.2010 11:41
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52