使用$ _FILES将图像上传到服务器不起作用?

时间:2011-08-03 08:51:30

标签: php html facebook

我有一个html文件,可以从用户的计算机中选择图像。下面给出了

//index.php
<html>
    <body>
        <form enctype="multipart/form-data" action="http://localhost/uploader/upload.php" method="POST">
            <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
            Please choose a photo: 
            <input name="photo" type="file"><br/><br/>
            Say something about this photo: 
            <input name="message" type="text" value=""><br/><br/>
            <input type="submit" value="Upload"/><br/>
        </form>
    </body>  
</html>

当用户点击“上传”按钮时,用户被重定向到uploader.php文件。 upload.php的代码如下所示

<?php 
//upload.php
if(isset($_FILES['photo']) && isset($_POST['message'])){

    $uploadfile = './uploads/'.basename($_FILES['photo']['name']);

    $iStats=getimagesize($_FILES['photo']['tmp_name']);

    if (isset($iStats['mime']) && $iStats[0]>0) {
        move_uploaded_file($_FILES['photo']['tmp_name'], $uploadfile);
        include_once 'fbmain.php';
        try{
            $uid = $facebook->getUser();
            $me = $facebook->api('/me');
            $token = $session['access_token'];//here I get the token from the $session array
            $album_id = '2179901265385';//MY ALBUM ID
            $facebook->setFileUploadSupport(true);
            $args = array('message' => $_POST['message']);
            $args['image'] = '@' . realpath($uploadfile);

            $data = $facebook->api('/'. $album_id . '/photos?access_token='. $token, 'post', $args);

        } catch(FacebookApiException $e){
            echo "Error:" .$e;
        }
        unlink($uploadfile);
        echo "Success!\n";
    } else {
        echo "Wrong file type!\n";
    }
}

?>

我在同一目录中创建了一个名为'uploads'的folde。 当用户上传文件时,首先将其上传到“上传”文件夹,然后再上传到Facebook。
这在localhost中工作正常。但是当它在服务器中时它不起作用。它给了'错误的文件类型!'消息。请注意我的服务器中有'uploads'文件夹的写权限。
我试图打印'$ _FILES'的值。

print_r($_FILES);

它给了我这个输出

Array ( [photo] => Array ( [name] => TEST IMAGE.jpg [type] => [tmp_name] => [error] => 2 [size] => 0 ) ) 

有人可以帮我这个吗?

1 个答案:

答案 0 :(得分:4)

错误2表示文件太大... MAX_FILE_SIZE以字节为单位