1

Chrome の move_uploaded_file 関数に問題があります。

IEでは問題なく動作します。アップロード スクリプト (upload.php) は次のとおりです。

<?php
session_start();
include "./global.php";


    $res = mysql_query("SELECT * FROM users WHERE id='".$_SESSION['uid']."'");
    $row = mysql_fetch_assoc($res);
    $userid = $row['id'];
    $targetFolder = "/var/www/picturebox/albums/$userid/";

    $tempFile = $_FILES['Filedata']['tmp_name'];
    var_dump($targetFolder.$userid."_");
    move_uploaded_file($tempFile,$targetFolder.$_FILES['Filedata']['name']);

?>

HTML:

<input type="file" name="file_upload" id="file_upload" />

HTML を読み取る関数:

$(function() {
    $('#file_upload').upload({
        'uploader' : 'upload.php'
    });
});

なぜ Chrome で動作しないのか、何か考えはありますか? Chrome ではファイルを「albums」に移動し、IE ではファイルを albums/userid に移動します

4

1 に答える 1

0

問題は、先週この問題が発生したことです。これは新しいスクリプトであり、ajx で呼び出すと、新しいセッションまたは間違ったセッションが発生します。php ajaxリクエストでsession_idを送信し、反対側でセッションを設定してみてください。

パラメータを介して session_id を送信できます。

$(function() {
    $('#file_upload').upload({
        'uploader' : 'upload.php?sid=<?php echo session_id(); ?>'
    });
});

実際のセッション ID をスクリプトに書き込む必要があります。スクリプトで javascript 変数を設定し、javascript でこれを使用することができます。これは 2 番目の可能性です。

PHPスクリプトで:

session_id($_GET['sid']);

次に、同じセッションを使用することを確認します。うまくいくことを願っています。

于 2012-07-01T19:40:16.797 に答える