Recent searches


No recent searches

Upload files via API - different behaviour with ZAFClient and JQuery



Posted May 27, 2024

Good morning,

 

I have a strange behaviour when uploading files via API. If I use Zendesk own ZAF client for my request then the uploaded PDF is corrupt, if the upload is made via a JQuery request, for example, then the file is OK.

 

Source with Client.Request / Corrupt Upload File

async function fetchFile(fileUrl, fileName, filecontentType) {
    try {

        const blobResponse = await $.ajax({
            url: fileUrl,
            method: 'GET',
            xhrFields: {
                responseType: 'blob'
            }
        });
        var formData = new FormData();
        formData.append('file', blobResponse, fileName);

        const options = {
            url: '/api/v2/uploads.json?filename=' + encodeURIComponent(fileName),
            type: 'POST',
            processData: false,
            contentType: false,
            headers: {
                'Content-Type': filecontentType
            },
            data: formData

        };

        const response = await client.request(options);

        if (typeof response === 'string') {
            responseData = JSON.parse(response);
        } else {
            responseData = response;
        }

        return responseData.upload.token;

    } catch (error) {
        console.error('Fehler beim Senden der Anfrage an den Server:', error);
        if (error.response) {
            console.error('Response data:', error.response.data);
        }
    }
}

 

The same source with Upload via Jquery / Upload File OK

async function fetchFile(fileUrl, fileName, filecontentType) {
    try {

        const blobResponse = await $.ajax({
            url: fileUrl,
            method: 'GET',
            xhrFields: {
                responseType: 'blob'
            }
        });
        var formData = new FormData();
        formData.append('file', blobResponse, fileName);

        const options = {
            url: 'https://<subdomain>.zendesk.com/api/v2/uploads.json?filename=' + encodeURIComponent(fileName),
            type: 'POST',
            processData: false,
            contentType: false,
            headers: {
                'Content-Type': filecontentType,
                'Authorization': 'Basic ' + btoa(zendeskEmail + '/token:' + zendeskApiToken)
            },
            data: formData

        };

        const response = await $.ajax(options);

        if (typeof response === 'string') {
            responseData = JSON.parse(response);
        } else {
            responseData = response;
        }

        return responseData.upload.token;

    } catch (error) {
        console.error('Fehler beim Senden der Anfrage an den Server:', error);
        if (error.response) {
            console.error('Response data:', error.response.data);
        }
    }
}

 

Does anyone have any idea what the problem might be? I am grateful for the advice !

 

Thanks in advance,

 

Marcus


0

1

1 comment

Hi Marcus, I'm running into the same issue. Did you ever discover what the issue was?

 

Cheers, Carl

1


Please sign in to leave a comment.

Didn't find what you're looking for?

New post