Chrome 中move_uploaded_file的 PHP 问题


PHP Issue with move_uploaded_file in Chrome

我对Chrome中的move_uploaded_file功能有问题。

它在IE中完美无缺。这是上传脚本(上传.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中,它将文件移动到"相册",在IE中,它将文件移动到相册/用户ID

问题是我上周遇到了这个问题,这是一个新脚本,你通过 ajx 调用它,然后你得到一个新会话或错误的会话。尝试使用 php ajax 请求发送session_id,并在另一端设置会话。

您可以通过参数发送session_id。

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

您必须将实际的会话 ID 写入脚本。您可以在脚本中设置 javascript 变量并在 javascript 中使用,这是第二种可能性。

在您的 PHP 脚本中:

session_id($_GET['sid']);

然后,您使用相同的会话。我希望它能起作用。