Perl Zendesk: Upload an Attachment File

Back to Index

Uploads an attachment file.

Documentation: https://developer.zendesk.com/rest_api/docs/core/attachments#upload-files

CURL Command

curl -X POST https://subdomain.zendesk.com/api/v2/uploads.json?filename=sample.pdf \
  -H "Content-Type: application/binary" \
  --data-binary @sample.pdf \
  -u zendesk_email:zendesk_password

Perl Example

use chilkat();

$rest = chilkat::CkRest->new();

#  URL: https://subdomain.zendesk.com/api/v2/uploads.json?filename=sample.pdf
$bTls = 1;
$port = 443;
$bAutoReconnect = 1;
$success = $rest->Connect("subdomain.zendesk.com",$port,$bTls,$bAutoReconnect);
if ($success != 1) {
    print "ConnectFailReason: " . $rest->get_ConnectFailReason() . "\r\n";
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$rest->SetAuthBasic("zendesk_email","zendesk_password");

$fileStream = chilkat::CkStream->new();
$fileStream->put_SourceFile("sample.pdf");

$rest->AddHeader("Content-Type","application/binary");

$strResponseBody = $rest->fullRequestStream("POST","/api/v2/uploads.json?filename=sample.pdf",$fileStream);
if ($rest->get_LastMethodSuccess() != 1) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$respStatusCode = $rest->get_ResponseStatusCode();
if ($respStatusCode >= 400) {
    print "Response Status Code = " . $respStatusCode . "\r\n";
    print "Response Header:" . "\r\n";
    print $rest->responseHeader() . "\r\n";
    print "Response Body:" . "\r\n";
    print $strResponseBody . "\r\n";
    exit;
}

$jsonResponse = chilkat::CkJsonObject->new();
$jsonResponse->Load($strResponseBody);

$uploadToken = $jsonResponse->stringOf("upload.token");
$uploadExpires_at = $jsonResponse->stringOf("upload.expires_at");
$uploadAttachmentUrl = $jsonResponse->stringOf("upload.attachment.url");
$uploadAttachmentId = $jsonResponse->IntOf("upload.attachment.id");
$uploadAttachmentFile_name = $jsonResponse->stringOf("upload.attachment.file_name");
$uploadAttachmentContent_url = $jsonResponse->stringOf("upload.attachment.content_url");
$uploadAttachmentMapped_content_url = $jsonResponse->stringOf("upload.attachment.mapped_content_url");
$uploadAttachmentContent_type = $jsonResponse->stringOf("upload.attachment.content_type");
$uploadAttachmentSize = $jsonResponse->IntOf("upload.attachment.size");
$uploadAttachmentWidth = $jsonResponse->stringOf("upload.attachment.width");
$uploadAttachmentHeight = $jsonResponse->stringOf("upload.attachment.height");
$uploadAttachmentInline = $jsonResponse->BoolOf("upload.attachment.inline");
$i = 0;
$count_i = $jsonResponse->SizeOfArray("upload.attachments");
while ($i < $count_i) {
    $jsonResponse->put_I($i);
    $url = $jsonResponse->stringOf("upload.attachments[i].url");
    $id = $jsonResponse->IntOf("upload.attachments[i].id");
    $file_name = $jsonResponse->stringOf("upload.attachments[i].file_name");
    $content_url = $jsonResponse->stringOf("upload.attachments[i].content_url");
    $mapped_content_url = $jsonResponse->stringOf("upload.attachments[i].mapped_content_url");
    $content_type = $jsonResponse->stringOf("upload.attachments[i].content_type");
    $size = $jsonResponse->IntOf("upload.attachments[i].size");
    $width = $jsonResponse->stringOf("upload.attachments[i].width");
    $height = $jsonResponse->stringOf("upload.attachments[i].height");
    $inline = $jsonResponse->BoolOf("upload.attachments[i].inline");
    $j = 0;
    $count_j = $jsonResponse->SizeOfArray("upload.attachments[i].thumbnails");
    while ($j < $count_j) {
        $jsonResponse->put_J($j);
        $j = $j + 1;
    }

    $i = $i + 1;
}

$i = 0;
$count_i = $jsonResponse->SizeOfArray("upload.attachment.thumbnails");
while ($i < $count_i) {
    $jsonResponse->put_I($i);
    $i = $i + 1;
}

Sample JSON Response Body

{
  "upload": {
    "token": "W7Y11FCxfQlzOFPDbVDUEE45C",
    "expires_at": "2018-04-18T20:03:56Z",
    "attachments": [
      {
        "url": "https://chilkat.zendesk.com/api/v2/attachments/360887735934.json",
        "id": 360887735934,
        "file_name": "sample.pdf",
        "content_url": "https://chilkat.zendesk.com/attachments/token/Q7wAubpKB2KERnNFj89JmdvS1/?name=sample.pdf",
        "mapped_content_url": "https://chilkat.zendesk.com/attachments/token/Q7wAubpKB2KERnNFj89JmdvS1/?name=sample.pdf",
        "content_type": "application/pdf",
        "size": 178399,
        "width": null,
        "height": null,
        "inline": false,
        "thumbnails": [
        ]
      }
    ],
    "attachment": {
      "url": "https://chilkat.zendesk.com/api/v2/attachments/360887735934.json",
      "id": 360887735934,
      "file_name": "sample.pdf",
      "content_url": "https://chilkat.zendesk.com/attachments/token/Q7wAubpKB2KERnNFj89JmdvS1/?name=sample.pdf",
      "mapped_content_url": "https://chilkat.zendesk.com/attachments/token/Q7wAubpKB2KERnNFj89JmdvS1/?name=sample.pdf",
      "content_type": "application/pdf",
      "size": 178399,
      "width": null,
      "height": null,
      "inline": false,
      "thumbnails": [
      ]
    }
  }
}