DataHandler名称不发送到服务器端

时间:2016-09-15 15:54:38

标签: java web-services soap 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 个答案:

答案 0 :(得分:0)

很遗憾,但不幸的是我会回答自己......意见:)

必须设置contentDisposition并将其放在附件的mimeHeader上,如下所示:

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

希望这对某人有帮助。