Sample code for 30+ languages & platforms
DataFlex

Facebook Upload Photo from Local File

See more Facebook Examples

Uploads a new photo with a caption from a local file.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttp
    Variant vReq
    Handle hoReq
    Variant vResp
    Handle hoResp
    String sResponseJson
    String sTemp1

    Move False To iSuccess

    // This example assumes Chilkat HTTP to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
    If (Not(IsComObjectCreated(hoReq))) Begin
        Send CreateComObject of hoReq
    End
    Set ComHttpVerb Of hoReq To "POST"
    Set ComContentType Of hoReq To "multipart/form-data"
    Set ComPath Of hoReq To "/v2.7/me/photos"

    // Use the previously obtained access token.
    // Note: The publish_actions scope is required to upload a photo.
    Send ComAddHeader To hoReq "Authorization" "Bearer FACEBOOK-ACCESS-TOKEN"

    // Send an "Expect: 100-continue" header in the request.
    // This causes the HTTP server to end a 100-continue response
    // immediately after receiving the HTTP header.  The client
    // (Chilkat) will receive this intermediate response, and if
    // it's not an error response, it knows that the HTTP server will
    // accept the data that is forthcoming.
    // The alternative is to get an error response after trying to upload
    // the entire contents of the files.
    Send ComAddHeader To hoReq "Expect" "100-continue"

    // Set a photo caption.
    Send ComAddParam To hoReq "caption" "Here are some penguins!"

    // Additional parameters can be added to the request by 
    // calling AddParam once per parameter.  
    // See https://developers.facebook.com/docs/graph-api/reference/user/photos
    // for more information about other optional parameters.

    // Indicate the local file to be uploaded.
    Get ComAddFileForUpload Of hoReq "source" "qa_data/jpg/penguins2.jpg" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoReq To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Upload the image file..
    Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
    If (Not(IsComObjectCreated(hoResp))) Begin
        Send CreateComObject of hoResp
    End
    Get pvComObject of hoReq to vReq
    Get pvComObject of hoResp to vResp
    Get ComHttpSReq Of hoHttp "graph.facebook.com" 443 True vReq vResp To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Examine the response body:
    Get ComBodyStr Of hoResp To sResponseJson
    Showln sResponseJson

    // The response contains JSON, such as this:
    // {"id":"10210224963435862","post_id":"10224048320139890_10210224963435862"}


End_Procedure