0

1 つのページに複数の入力フィールドがあります。各入力フィールドには、テキスト入力フィールドとファイル アップロード フィールドがあります。現在のワークフローは次のようになります。

  • アップロード直後に、ファイルの名前がデータベースに保存されます。(uploadify.php)
  • アップロード フィールドに対応する必要があるデータベースから ID を取得します。(uploadify.php - セッションで書き込みますか?)

ここで、どのファイル アップロードがどのテキスト入力に対応しているかを追跡する方法が必要です。ファイル アップロード フィールドの ID があれば、対応するテキスト入力との関係を作成し、データベースから返された ID と一緒に、テキストを対応するアップロードに保存できます。

hereで説明されている方法を試しましたが、 Uploadify という入力フィールドのデータを提供できないオブジェクトonSelectしかありません。fileUploadify の実際のバージョンでは、これを提供する別の機能は見つかりませんでした。

現在、これを使用することを考えて$_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;
    }
}

おそらく、Javascript マジックを使用して返すことができるオブジェクトを使用onUploadSuccessすることができます。しかし、どの入力フィールドから Uploadify が呼び出されたのかはまだわかりません...datauploadify.php

4

1 に答える 1

1

jQuery を使用して uploadify をセットアップできます.each()。これにより、次のように formData を介して渡される id を設定できます。

$('.iconupload').each(function() {
    var $iconUpload = $(this);

    $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', 'uploadId': $iconUpload.attr("id")},
        '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);
        }
    }
});

uploadify.php 内にデータを保存したくない場合は、次のonUploadSuccessように保存できます。

'onUploadSuccess': function(file, data, response) {
    saveIconData($(iconUpload.attr("id"), file.name);       
}

function saveIconData(id, fileName) {
    // Save via ajax
}

ajax 経由でデータを保存するには、jQuery の$.ajax()メソッドを使用できます。次のような ajax 呼び出しを設定します。

$.ajax({
    url: "urlToPhpFile.php",
    data: { iconID: value, iconFileName: value },
    success: function(result) {
        // do something on success of save
    }
});
于 2012-09-20T12:37:06.053 に答える