【问题标题】:DataHandler name not send to server sideDataHandler 名称不发送到服务器端
【发布时间】:2023-04-11 04:17:01
【问题描述】:

我正在使用 Apache CXF 实现发送附件。即使我设置了dataHandler的名称我也不知道为什么在服务器端没有reveiced。

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 我已经设置了名称。发送后就没有了

【问题讨论】:

    标签: java web-services soap datahandler


    【解决方案1】:

    悲伤但不幸的是我会回答自己..再次:)

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

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

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多