2011-08-01 59 views
0

我正在嘗試爲Twitter更改頭像製作圖片上傳表單。 Twitter表示,在我上傳圖片之前,圖片必須經過base 64編碼。所以這裏有一個樣本Base 64編碼圖像。上傳twitter頭像

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>";} 

    ?> 

請幫

+0

你什麼錯誤需要的結果? –

+0

變量'$ im'中的內容和設置在哪裏? – vascowhite

+0

base64_encode()期望參數1是字符串,在第7行的C:\ wamp \ www \ php \ post.php中給出的數組。 – boobieee

回答

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; 
+0

我試過這個。我上傳的每張圖片都給了我相同的64位代碼 – boobieee

+0

@boobieee對不起 - 我忘了用'file_get_contents()'得到實際的文件二進制數據。看到上面的更改。 –

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); 
}