簡體   English   中英

如何使用php API更新QuickBlox中的用戶個人資料圖片?

[英]How to update user profile picture in QuickBlox using php api?

如何使用php codeigntier更新Quickblox中的用戶個人資料圖片?

的文檔位於

http://quickblox.com/developers/用戶

找到其余的api后,我找到了如何將個人資料圖片上傳到quickblox用戶的解決方案。

按照quickblox rest api上傳內容的過程分為三個3個步驟:首先,您從quickblox生成令牌,然后執行這3個步驟

  1. 建立檔案

https://quickblox.com/developers/Content#Create_a_file

  $strFilename = '2.jpeg';
  $post_body = http_build_query(array(
        'blob[content_type]' => 'image/jpeg',
        'blob[name]' =>$strFilename,
    ));
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, QB_API_ENDPOINT.'blobs.json');
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_body);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Accept: application/json',
        'Content-Type: application/x-www-form-urlencoded',
        'QuickBlox-REST-API-Version: 0.1.0',
        'QB-Token: ' . $token
    ));
    $response = curl_exec($curl);
    $error = curl_error($curl);


    if ($response) {
            return $response;
    } else {
            return false;
    }
    curl_close($curl);

在curl調用之后,您得到了響應,並且在響應中得到了這樣的響應

[blob] => Array
    (
        [id] => 7178102
        [uid] => f9cc9d7938c4468f8bdccdcb68fb5d8c00
        [content_type] => image/jpeg
        [name] => 2.jpeg
        [size] => 
        [created_at] => 2017-02-07T10:35:38Z
        [updated_at] => 2017-02-07T10:35:38Z
        [ref_count] => 1
        [blob_status] => 
        [set_completed_at] => 
        [public] => 1
        [last_read_access_ts] => 
        [lifetime] => 8600
        [account_id] => 56721
        [app_id] => 
        [blob_object_access] => Array
            (
                [id] => 7178102
                [blob_id] => 7178102
                [expires] => 2017-02-07T11:35:38Z
                [object_access_type] => Write
                [params] => https://qbprod.s3.amazonaws.com/?Content-Type=image%2Fjpeg&Expires=Tue%2C%2007%20Feb%202017%2011%3A35%3A38%20GMT&acl=public-read&key=f9cc9d7938c4468f8bdccdcb68fb5d8c00&policy=eyJleHBpcmF0aW9uIjoiMjAxNy0wMi0wN1QxMTozNTozOFoiLCJjb25kaXRpb25zIjpbeyJidWNrZXQiOiJxYnByb2QifSx7ImFjbCI6InB1YmxpYy1yZWFkIn0seyJDb250ZW50LVR5cGUiOiJpbWFnZS9qcGVnIn0seyJzdWNjZXNzX2FjdGlvbl9zdGF0dXMiOiIyMDEifSx7IkV4cGlyZXMiOiJUdWUsIDA3IEZlYiAyMDE3IDExOjM1OjM4IEdNVCJ9LHsia2V5IjoiZjljYzlkNzkzOGM0NDY4ZjhiZGNjZGNiNjhmYjVkOGMwMCJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFJWTdLRk0yM1hHWEo3UjdBLzIwMTcwMjA3L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWFsZ29yaXRobSI6IkFXUzQtSE1BQy1TSEEyNTYifSx7IngtYW16LWRhdGUiOiIyMDE3MDIwN1QxMDM1MzhaIn1dfQ%3D%3D&success_action_status=201&x-amz-algorithm=AWS4-HMAC-SHA256&x-amz-credential=AKIAIY7KFM23XGXJ7R7A%2F20170207%2Fus-east-1%2Fs3%2Faws4_request&x-amz-date=20170207T103538Z&x-amz-signature=5e236c3da60a922951c8ab6281ae82af3a88e37c15d8630ad6ff590610a87fd8
            )

    )
  1. 上傳文件

因此您必須使用params url參數並再次調用上傳文件

$strFilename = '2.jpeg';
    $url = 'https://qbprod.s3.amazonaws.com/';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, array(
        'Content-Type' => $arr['Content-Type'],
        'Expires'=>$arr['Expires'],
        'acl'=>$arr['acl'],
        'key'=>$arr['key'],
        'policy'=>$arr['policy'],
        'success_action_status'=>$arr['success_action_status'],
        'x-amz-algorithm'=>$arr['x-amz-algorithm'],
        'x-amz-credential'=>$arr['x-amz-credential'],
        'x-amz-date'=>$arr['x-amz-date'],
        'x-amz-signature'=>$arr['x-amz-signature'],
        'file' => new CurlFile('2.jpeg', $arr['Content-Type'], $strFilename)
    ));
    $response = curl_exec($ch);
    if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 204) {
        echo 'Success!';
    } else {
        $error = substr($response, strpos($response, '<Code>') + 6);
        echo substr($error, 0, strpos($error, '</Code>'));
    }
    return $response;

因此通過使用此代碼,您的內容文件將被上傳,並且您獲得了文件的位置並用作個人資料圖片等。

  1. 申報文件

     $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://api.quickblox.com/blobs/" . $strId . "/complete.xml"); // strId is blod id return by 1 step curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "blob[size]=10000"); //your file size curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT"); $headers = array(); $headers[] = "Quickblox-Rest-Api-Version: 0.1.0"; $headers[] = "Qb-Token: " . $token; $headers[] = "Content-Type: application/x-www-form-urlencoded"; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = curl_exec($ch); if (curl_errno($ch)) { echo 'Error:' . curl_error($ch); } curl_close($ch); return $result; 

請讓我知道任何問題都一樣。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM