如何使用HTML文件选择器(input type="file")上传照片到Facebook (Graph API)

3
我有一个HTML文件,可以从用户的计算机中选择图片。以下是代码:
```html

我有一个 HTML 文件,可以从用户的计算机中选择图片。以下是代码:

```
  <html>
    <body>
    <form enctype="multipart/form-data" action="http://localhost/uploader/upload.php" method="POST">
    Please choose a photo: 
    <input name="source" 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>

当我点击上传按钮时,我需要将所选图像的真实路径传递到upload.php文件中。 upload.php的代码如下:
<?php
    include_once 'fbmain.php';
    //some codes 
    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

        //upload my photo
        $FILE_PATH= 'HERE_I_NEED_THE_REAL_PATH_OF_THE_IMAGE';
        $facebook->setFileUploadSupport(true);
        $args = array('message' => 'Photo Caption');
        $args['image'] = '@' . realpath($FILE_PATH);

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

    } catch(FacebookApiException $e){
        echo "Error:" .$e;
    }    
?>

当我将路径传递给变量$FILE_PATH(例如:$FILE_PATH ='C:\My Documents\My Pictures\a.jpg')时,它可以正常工作。但是我需要从HTML文件选择器中获取此路径。
是否有方法可以实现这一点?
至少,有人可以告诉我如何访问文件选择器的文本字段的值吗?($_POST['texboxname']在此处无法使用)。
我可以找到许多使用图形API上传图像到Facebook的教程,但没有使用HTML文件选择器的教程。
所以,有人可以帮帮我吗?

查找 http://php.net/manual/zh/function.move-uploaded-file.php,然后将照片保存在临时目录中,在上传完成后删除。 - Lawrence Cherone
首先非常感谢您的回复。您能否详细解释一下呢?我怎样才能将照片保存在临时目录中,并在上传后将其删除?移动到临时目录后,我该如何获取真实路径呢?能否请您详细说明一下。谢谢。 - Roshanck
1个回答

5
尝试这个:仅为示例。
<html>
    <body>
    <form enctype="multipart/form-data" action="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>


<?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”的文件夹。非常感谢你,朋友..! - Roshanck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接