0

ユーザーが Uploadify を使用してファイルをアップロードするフォルダーを選択する方法に取り組んでいます。私はたくさんの JavaScript コードを持っていますが、最後のビットを除いてすべて動作します。必要に応じてすべてを表示できますが、それは問題ではないと固く信じています.

これが私のコードです:

$("#file_upload").uploadify({
        'buttonText'    : 'Upload New Files',
        'height'        : 30,
        'swf'           : 'uploadify/uploadify.swf',
        'uploader'      : 'uploadify/uploadify.php',
        'width'         : 120,
        'folder'        : $('#folder').val(),
        'auto'          : true,
        'multi'         : true,
        'onUploadComplete' : function(file) {
            location.reload();
        }
    });

    $("#folder").change(function () {
        var path = "/" + $(this).val();
        $('#file_upload').uploadifySettings("scriptData", {'folder': path });
        alert(path);
    });

このコードは document.ready() にラップされています。

このコードが行うことは

  1. アップロード機能を初期化する
  2. ユーザーが #folder (ドロップダウン) の値を変更すると、uploadify 関数の値 "folder" が変更されます。

セレクトボックスをクリックしても何も起こりません。行をコメントアウトすると:

$('#file_upload').uploadifySettings("scriptData", {'folder': path });

アラートが表示されます。行をそのままにしておくと、何もしません。

Firebug に相談したところ、次のエラーが表示されていることがわかりました。

TypeError: $(...).uploadifySettings Not A Function

論理的には、uploadify がページにリンクされていないことを意味します。しかし、ファイルをアップロードするとアップロードされるので、そこにあり、機能します。

ここに私のHTML/PHPがあります:

<h3>Your Uploaded Files</h3>
    <input type="file" name="file_upload" id="file_upload">
    <span style="margin: 5px 10px 0 0; float: left;">to</span>
    <select id="folder">
        <?php
        echo '<option value="'.$directory.'">Downloads</option>';
        $friendlyDir;
        foreach(glob('downloads/*', GLOB_ONLYDIR) as $dir) {
          $friendlyDir = str_replace("downloads/","",$dir);
          echo '<option value="'.$dir.'">'.ucfirst(strtolower($friendlyDir)).'</option>';
        }
        ?>
    </select>
    <div id="file_viewer"></div>

HTML/PHP は正常に動作しますが、トリガーなどを確認できるように含めることにしました。

誰かがこれを調べることができれば、私は感謝します. クロスブラウザー テストは行っていませんが、使用しているブラウザーは Firefox 19.0.2 です。

ありがとうございました。

4

1 に答える 1

1

私はuploadify関数をファイルに追加するためにこれを行うことになりました:

var path;
    $("#file_upload").uploadify({
        'buttonText'    : 'Upload New Files',
        'height'        : 30,
        'swf'           : 'uploadify/uploadify.swf',
        'uploader'      : 'uploadify/uploadify.php',
        'width'         : 120,
        'folder'        : $('#folder').val(),
        'auto'          : true,
        'multi'         : true,
        'folder'        : path,
        'onUploadStart' : function(file) {
           $('#file_upload').uploadify("settings", 'formData', {'folder' : path});
        },
        'onUploadSuccess' : function(file, data, response) {
            //alert('The file ' + file.name + ' was successfully uploaded with a response of ' + response + ':' + data);
            location.reload();
        }
    });

    $("#folder").change(function () {
        path = "/" + $(this).val();
    });

そしてuploadify.phpで私はそれをこれに変更しました:

//$targetFolder = '/file/downloads'; // Relative to the root
$targetFolder = "/file".$_POST['folder'];

if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png','pdf','doc','docx'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);

if (in_array($fileParts['extension'],$fileTypes)) {
    move_uploaded_file($tempFile,$targetFile);
    echo $targetFolder;
} else {
    echo 'Invalid file type.';
}
}

そして今それは動作します:D

于 2013-03-23T23:26:28.793 に答える