I'm trying to add attachment from input stream or byte array .
I have the following code:
Blob blob = rset.getBlob(12);
int blobLength = (int) blob.length();
byte[] blobAsBytes = blob.getBytes(1, blobLength);
blob.free();
String folder ="/home/atlassian/application-data/SBMAttachments/";
File tempFile = new File(folder+filePrefix + fileName);
FileOutputStream fos = new FileOutputStream(tempFile);
fos.write(blobAsBytes);
addAttachmentToJira(tempFile,issue, fileName,user);
public static boolean addAttachmentToJira(File file,Issue issue,String filename,ApplicationUser user) throws Exception{
MimeManager mm = new MimeManager(new FileInputStream(file));
AttachmentManager attachmentManager = ComponentAccessor.getAttachmentManager();
CreateAttachmentParamsBean.Builder builder = new CreateAttachmentParamsBean.Builder();
builder.file(file);
builder.filename(file.getName());
builder.contentType(mm.getSuggestedMimeType(filename));
builder.author(user);
builder.issue(issue);
builder.copySourceFile(true);
CreateAttachmentParamsBean bean = builder.build();
com.atlassian.fugue.Either<AttachmentError,ChangeItemBean> result = attachmentManager.tryCreateAttachment(bean);
if (result.isLeft()) {
AttachmentError attachmentError = (AttachmentError) result.left().get();
//LOG.error("AttachmentError '" + attachmentError.getLogMessage());
} else {
ChangeItemBean changeItemBean = (ChangeItemBean) result.right().get();
//attachmentManager.createAttachment(bean);
//LOG.error("created!");
}
return true;
}
My idea is to add the attachment without saving the file (to save time).
Is there a way to add the attachment from input stream ?