Имя 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);
Надеюсь, это будет полезно для кого-то.