У меня есть несколько полей ввода на одной странице. Каждое поле ввода имеет текстовый ввод и поле для загрузки файлов. Текущий рабочий процесс выглядит следующим образом:
Теперь мне нужен способ отслеживать, какая загрузка файла соответствует тому, куда вводится текст. Если у меня есть идентификатор поля для загрузки файла, я могу установить отношение к соответствующему текстовому вводу, а вместе с возвращенным идентификатором из базы данных я мог бы сохранить текст в соответствующую загрузку.
Я попробовал описанный здесь способ, но onSelect
имеет только file
объект, который не может предоставить мне данные, поля ввода которых называются Uploadify. Я не нашел другую функцию, которая дает мне это в реальной версии Uploadify.
Теперь я думаю об использовании $_SESSION
для этого, но не знаю, как это можно сделать.
Клиентская сторона :
$('.iconupload').uploadify({ 'swf' : '<?php echo SUBFOLDER; ?>/swf/uploadify.swf', 'uploader' : '<?php echo SUBFOLDER; ?>/includes/uploadify.php', 'formData' : {'folder' : '<?php echo IMG_UPLOAD_ICONS; ?>', 'id' : '<?php echo $_SESSION['ID']; ?>', 'type' : 'icon'}, 'multi' : false, 'auto' : true, 'removeCompleted': false, 'queueSizeLimit' : 1, 'simUploadLimit' : 1, 'fileTypeExts' : '*.jpg; *.jpeg; *.png; *.gif', 'fileTypeDesc' : 'JPG Image Files (*.jpg); JPEG Image Files (*.jpeg); PNG Image Files (*.png), GIF (*.gif)', 'onUploadError' : function(file, errorCode, errorMsg, errorString) { alert('The file ' + file.name + ' could not be uploaded: ' + errorString); }, 'onUploadSuccess': function(file, data, response) { //alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data); }, 'onSelect' : function(file) { //var elem_id = $(event.target).attr("id"); //here you get the id of the object. //alert (elem_id); console.debug(file); //$("#"+elem_id).uploadifySettings('formData',{'formID':elem_id}) } });
Серверная сторона :
if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/'; $targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name']; $res= mkdir(str_replace('//','/',$targetPath), 0750, true); $res2=move_uploaded_file($tempFile,$targetFile); $relative_url = str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile); echo $relative_url; if($_REQUEST['type'] == 'icon' && !empty($_REQUEST['id'])){ $iconid = $db->addIcon($_REQUEST['id'], $relative_url); $icons = array(); if(isset($_SESSION['icons'])){ $icons = $_SESSION['icons']; } $icons[$_REQUEST['formID']]= $iconid; $_SESSION['icons'] = $icons; } }
Возможно, можно использовать onUploadSuccess
и объект data
, который может быть возвращен в uploadify.php
и использовать некоторую магию Javascript. Но я до сих пор не знаю, из которого вызывается поле ввода Uploadify …