Base 64编码图像。上传twitter头像

时间:2011-08-01 11:13:22

标签: php twitter base64

我正在尝试为twitter创建图片上传表单以更改头像。 Twitter表示在上传之前图片必须是64位编码。所以这是一个样本

https://dev.twitter.com/docs/api/1/post/account/update_profile_image

到目前为止,我怎么能这样做?我一直在犯错误

PHP代码:

<?php // process form data 
    if ($_POST['image']){ 
        // post profile update 
        $post_data = array( 
            "image" => $_POST['image'] 
        ); 

         $post_data = base64_encode($post_data); 

        echo $post_data; 
        } 
        else{ 
        echo     
        "  <form action='post.php' method='POST' enctype='multipart/form-data'> 
<br><input type='hidden' name='image' value='update_profile_image'> 

    <input type='file' name='image' size='30'/><br> 

    <input type='submit' value='Upload' class='button'/> 


    </form>";} 

    ?>

请帮忙

2 个答案:

答案 0 :(得分:1)

从外观上看,您根本没有从POST中检索图像。图像本身将在$_FILES

中提供
// See what's in $_FILES
var_dump($_FILES);

// You need the temporary name of your image from $_FILES
$filedata = file_get_contents($_FILES['image']['tmp_name']);
$post_data = base64_encode($filedata);

// Now you should have a base64 ascii string
echo $post_data;

答案 1 :(得分:1)

这应该这样做。 将上传的文件移动到目录,因为您无法通过加密[tmp_name]

获得所需的结果
if ($_FILES['image']){

move_uploaded_file($_FILES["image"]["tmp_name"], "path" .basename($_FILES["image"]["name"]));
$meh = file_get_contents("path/" .basename($_FILES["image"]["name"]));
$results = base64_encode($meh);
}