I am trying to create attachments in Jira Cloud using the API, the files are Generated in Jira but the content is not decoded the base64 characters appear. Has anyone had the same error using Salesforce Apex code?
// Método para enviar adjuntos.
@AuraEnabled
public static String uploadAttachment(String jiraIssueKey, Blob attachmentBlob, String attachmentFileName) {
String jiraBaseUrl = 'https://org.atlassian.net';
String jiraAttachmentApiEndpoint = '/rest/api/3/issue/' + jiraIssueKey + '/attachments';
HttpRequest request = new HttpRequest();
request.setEndpoint(jiraBaseUrl + jiraAttachmentApiEndpoint);
request.setMethod('POST');
// Autenticación básica
String username = 'User';
String accessToken = 'Token';
String authHeader = 'Basic ' + EncodingUtil.base64Encode(Blob.valueOf(username + ':' + accessToken));
request.setHeader('Authorization', authHeader);
request.setHeader('X-Atlassian-Token', 'no-check');
String boundary = '----------------------------' + Datetime.now().getTime();
String header = '--' + boundary + '\r\nContent-Disposition: form-data; name="file"; filename="' + attachmentFileName + '"\r\nContent-Type: application/octet-stream\r\n\r\n';
String footer = '\r\n--' + boundary + '--\r\n';
request.setHeader('Content-Type', 'multipart/form-data; boundary=' + boundary);
String body = '';
body += header;
body += attachmentBlob.toString();
body += footer;
request.setBodyAsBlob(Blob.valueOf(body));
Http http = new Http();
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
return 'Archivo cargado correctamente.';
} else {
return 'Error uploading attachment: ' + response.getStatus() + ' - ' + response.getBody();
}
}
Comparto Javascript
fileInputHandler(event) {
const files = event.target.files;
for (let i = 0; i < files.length; i++) {
const file = files[i];
const reader = new FileReader();
reader.onload = (event) => {
const attachmentData = event.target.result.split(',')[1]; // Remove the data URI prefix
const attachmentFileName = file.name;
this.uploadAttachmentToJira(attachmentData, attachmentFileName);
};
reader.readAsDataURL(file);
}
}
async uploadAttachmentToJira(attachmentData, attachmentFileName) {
try {
console.log('resultadosFile=', this.Jira_Issue);
console.log('resultadosFile=', attachmentData);
console.log('resultadosFile=', attachmentFileName);
uploadAttachment({ jiraIssueKey: this.Jira_Issue, attachmentBlob: attachmentData, attachmentFileName: attachmentFileName })
const result = await uploadAttachmentToApex(attachmentData, attachmentFileName);
console.log(result);
} catch (error) {
console.error(error);
}
}
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.