3

ユーザー名のセッション変数を使用して、uploadify (バージョン 3.1) でアップロード パスを指定する必要があります。次を使用する uploadifive.php では、正常に動作します。

$uploadDir = 'media/' . $_SESSION["user_name"] . '/';

ただし、uploadify では、同じコードを使用すると、ファイルはメディア フォルダーにアップロードされるだけです (ユーザー フォルダーは無視されます)。私は $_SESSION["user_name"] を uploadify.php にエコーし、onUploadSuccess 関数を使用してこれを取得しました。実際、セッションを開始したにもかかわらず、username 変数が uploadify.php に渡されません。

これがuploadifyではなくuploadifiveで機能するのは奇妙に思えます。私はPHPにあまり精通していないので、これについて何か助けていただければ幸いです。

以下に完全な uploadify.php スクリプトを含めます。

ありがとう、

ニック

<?php
session_start();
/*
Uploadify
Copyright (c) 2012 Reactive Apps, Ronnie Garcia
Released under the MIT License <http://www.opensource.org/licenses/mit-license.php> 
*/
// Define a destination
$targetPath = 'media/' . $_SESSION["user_name"] . '/';

if (!empty($_FILES)) {
    $tempFile = $_FILES['Filedata']['tmp_name'];
    $targetFile = $targetPath . $_FILES['Filedata']['name'];

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

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

2 に答える 2

2

私もこの問題に遭遇しました。

Uploadify フラッシュ ファイルは、ブラウザではなく PHP スクリプトを呼び出すファイルです。これは、PHP セッションがブラウザからフラッシュおよびサーバーに伝播されないことを意味します。セッション ID を $_GET/ で渡すだけで済みます。 $_POST を使用して問題を解決します。

HTML ファイル内:

<input type="hidden" id="sessionid" value="<?php echo session_id(); ?>" />

JavaScript ファイル内:

$('#image').uploadify({
    'uploader'  : '/uploadify-v2.1.4/uploadify.swf',
    'script'    : '/uploadify.php',
    'cancelImg' : '/uploadify-v2.1.4/cancel.png',
    'folder'    : '/tempfiles',
    'auto'      : true,
    'multi'     : false,
    'scriptData': { 'session': $('#sessionid').val() }
});

PHP ファイル内:

if ( isset($_REQUEST['session']) && !empty($_REQUEST['session']) ) {
    session_id($_REQUEST['session']);
}
session_start();

セッション構成が auto_start に設定されている場合に問題があるようです (ただし、これを完全にテストしていません)。

これはUploadify のドキュメントにも記載されています。

于 2012-05-24T00:59:13.860 に答える
1

ログインスクリプトをチェックして、ユーザーの認証時にセッション配列にユーザー名を実際に保存していることを確認します。を呼び出しsession_start()ているため、その可能性が排除されます。したがって、呼び出し$_SESSION["user_name"]て値を取得していない場合は、そもそも値がないか、キーが間違っていることを意味するだけです。

于 2012-05-24T00:48:09.947 に答える