2011-11-03 145 views
2

我有一些問題試圖讓我的代碼將HTML畫布作爲照片發佈到Tumblr。我使用PHP,並在服務器端的代碼如下:Tumblr API從HTML畫布發佈照片

if(isset($_POST['postphoto']) and $_SESSION['loggedin']) { 
    $title = $_POST['title']; 
    $caption = $_POST['caption']; 
    tags = $_POST['tags']; 
    $imageData = $_POST['imageData']; 
    $imageData = substr($imageData,strpos($imageData,",")+1); 
    $imageData = str_replace(' ','+',$imageData); 

    # Set access token 
    $tumblr->set_token($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 

    $data = array(); 
    $data['post'] = array(
     'type' => 'photo', 
     'generator' => 'AppName', 
     'data' => $imageData, 
     'name' => $title, 
     'caption' => $caption, 
     'tags' => $tags 
    ); 

    $response = $tumblr->fetch('http://www.tumblr.com/api/write', $data); 

    if($response['successful']) { 
     echo "Update successful!<br><br>"; 
    } else { 
     echo "Update failed. {$response[body]}<br><br>"; 
    } 
} 

在JavaScript端,我有以下幾點:

var imgData = canvas.toDataURL("image/png");    
$("#imageData").val(imgData); 

的imageData是表單類型隱藏所以我乾脆的設置值。整個表單然後發佈到PHP端。我已經檢查並且值正確地傳遞了(我爲TwitPic做了類似的事情,因爲它只需要toDataURL值,但Tumblr給出了很多問題)。

感謝您的幫助! :)

+1

最後,我通過讓PHP首先將dataURL(base64)寫入臨時映像文件,然後將該映像文件作爲源(而不是數據,請參閱Tumblr api)來解決此問題。 – Wysie

+0

愚蠢的問題:你使用enctype =「multipart-formdata」? – Paddy

+0

嗨,稻田!試過了,它不起作用(並且應該不重要,因爲base64編碼數據在通過時被視爲字符串)。如我錯了請糾正我。 – Wysie

回答

0

這可能是因爲你張貼照片帖子的標題?
照片帖子沒有標題。當我刪除'name' => $title,時,讓我知道它是否有效。