我正在使用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我有名字设置。发送后它不再存在
答案 0 :(得分:0)
很遗憾,但不幸的是我会回答自己......意见:)
必须设置contentDisposition并将其放在附件的mimeHeader上,如下所示:
String contentDisposition = "Content-Disposition: attachment; name=\"" + fileName + "\"";
attachmentPart.addMimeHeader("Content-Disposition", contentDisposition);
希望这对某人有帮助。