C# UWP/WinRT 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

C# UWP/WinRT Example

Chilkat.Rest rest = new Chilkat.Rest();
bool success;

//  URL: https://subdomain.zendesk.com/api/v2/uploads.json?filename=sample.pdf
bool bTls = true;
int port = 443;
bool bAutoReconnect = true;
success = await rest.ConnectAsync("subdomain.zendesk.com",port,bTls,bAutoReconnect);
if (success != true) {
    Debug.WriteLine("ConnectFailReason: " + Convert.ToString(rest.ConnectFailReason));
    Debug.WriteLine(rest.LastErrorText);
    return;
}

rest.SetAuthBasic("zendesk_email","zendesk_password");

Chilkat.Stream fileStream = new Chilkat.Stream();
fileStream.SourceFile = "sample.pdf";

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

string strResponseBody = await rest.FullRequestStreamAsync("POST","/api/v2/uploads.json?filename=sample.pdf",fileStream);
if (rest.LastMethodSuccess != true) {
    Debug.WriteLine(rest.LastErrorText);
    return;
}

int respStatusCode = rest.ResponseStatusCode;
if (respStatusCode >= 400) {
    Debug.WriteLine("Response Status Code = " + Convert.ToString(respStatusCode));
    Debug.WriteLine("Response Header:");
    Debug.WriteLine(rest.ResponseHeader);
    Debug.WriteLine("Response Body:");
    Debug.WriteLine(strResponseBody);
    return;
}

Chilkat.JsonObject jsonResponse = new Chilkat.JsonObject();
jsonResponse.Load(strResponseBody);

string uploadToken;
string uploadExpires_at;
string uploadAttachmentUrl;
int uploadAttachmentId;
string uploadAttachmentFile_name;
string uploadAttachmentContent_url;
string uploadAttachmentMapped_content_url;
string uploadAttachmentContent_type;
int uploadAttachmentSize;
string uploadAttachmentWidth;
string uploadAttachmentHeight;
bool uploadAttachmentInline;
int i;
int count_i;
string url;
int id;
string file_name;
string content_url;
string mapped_content_url;
string content_type;
int size;
string width;
string height;
bool inline;
int j;
int count_j;

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.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.J = j;
        j = j + 1;
    }

    i = i + 1;
}

i = 0;
count_i = jsonResponse.SizeOfArray("upload.attachment.thumbnails");
while (i < count_i) {
    jsonResponse.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": [
      ]
    }
  }
}