Имя DataHandler не отправляется на серверную часть

Я отправляю вложение, используя реализацию Apache CXF. Даже если я установлю имя dataHandler, я не знаю, почему это не скрывается на стороне сервера.

Map<String, DataHandler> attachmentsMap = (Map<String, DataHandler>) context.get(MessageContext.OUTBOUND_MESSAGE_ATTACHMENTS);
ByteArrayDataSource bads = new ByteArrayDataSource(file, PDF_MIME_TYPE);
bads.setName(fileId);

DataHandler dh = new DataHandler(bads);

AttachmentPart attachmentPart = message.createAttachmentPart();

attachmentPart.setContent(new ByteArrayInputStream(file), PDF_MIME_TYPE);
attachmentPart.setContentId(fileId);
attachmentPart.setMimeHeader("fileName", "test");
message.addAttachmentPart(attachmentPart);
message.saveChanges();

attachmentsMap.put(fileId, dh);

Как вы можете видеть, когда я делаю "bads.setName(fileId);" также устанавливается имя dataHandler. Локально, если я делаю dh.getName, у меня установлено имя. После отправки его больше нет

1 ответ

Грустно, но, к сожалению, я отвечу сам.. снова:)

ContentDisposition должен быть установлен и помещен в mimeHeader вложения следующим образом:

 String contentDisposition = "Content-Disposition: attachment; name=\"" + fileName + "\"";                                                
 attachmentPart.addMimeHeader("Content-Disposition", contentDisposition);

Надеюсь, это будет полезно для кого-то.

Другие вопросы по тегам