我正在尝试使用 java 和 Jersey 进行复制,将文件上传到 ZenDesk,用作票证的附件。ZenDesk 的示例代码使用 curl 和 --data-binary 参数,引用磁盘上的文件。我正在使用我在 git 上找到的 SDK 客户端作为起点,除了文件上传之外,有关此 SDK 的所有内容都可以正常工作。
这是我目前正在上传的代码:
File fileToUpload = new File(attachment.getUrl());
FileDataBodyPart filePart = new FileDataBodyPart(attachment.getFilename(), fileToUpload, MediaType.APPLICATION_OCTET_STREAM_TYPE);
FormDataContentDisposition.FormDataContentDispositionBuilder builder = FormDataContentDisposition.name(filePart.getName());
builder.fileName(fileToUpload.getName());
builder.size(fileToUpload.length());
filePart.setFormDataContentDisposition(builder.build());
FormDataMultiPart multiPart = new FormDataMultiPart();
multiPart.bodyPart(filePart);
multiPart.field("filename", attachment.getFilename());
ClientResponse cr = rootResource.path("/api/v2/uploads.json")
.accept(MediaType.APPLICATION_JSON_TYPE)
.type(MediaType.MULTIPART_FORM_DATA_TYPE)
// .post(AttachmentWrapper.class, attachment);
.post(ClientResponse.class, multiPart);
这会导致 ZenDesk 发出内部服务器错误 500 响应。
我尝试了几种不同的参数安排,但没有成功。我用作起点的项目位于此处:Zendesk-API-Client
原始项目的问题是正在上传的文件在 ZenDesk 服务器上没有可用的内容,它只是定义文件的 JSON。
谢谢,
艾伦