在Chrome中使用move_uploaded_file的PHP问题

时间:2012-07-01 18:41:47

标签: php file upload move

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中,它将文件移动到“相册”,在IE中,它将文件移动到相册/用户ID

1 个答案:

答案 0 :(得分:0)

问题是我上周遇到了这个问题,这是一个新脚本,你通过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']);

然后你会使用同一个会话。我希望它的运作。