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
Carl Bramblett
Hi Marcus, I'm running into the same issue. Did you ever discover what the issue was?
Cheers, Carl
1