Jersey接收multipart文件并将其存储在temp文件夹中

时间:2017-06-02 07:44:45

标签: java-ee jax-rs multipartform-data jersey-2.0 file-handling

我试图编写一件球衣REST api来上传文件。收到文件后,我必须将文件保存在一些临时文件夹中,然后将文件发送到另一台服务器进行处理。我被困在我将文件保存在带有收到文件名的临时文件夹中的部分。如何使用名称处理从多个客户端上载的文件。因为具有相同名称的文件将被最新文件替换。我不想重命名该文件。有没有办法解决这个问题。

以下是我目前的实施

@POST @Path("/uploadfile") @Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream,
  @FormDataParam("file") FormDataContentDisposition fileDetails, @FormDataParam("meta") String requestMeta) {

String fileLocation = System.getProperty("java.io.tmpdir") + "/"+ System.currentTimeMillis() + "/" + fileDetails.getFileName(); //rename file with timestamp which I need to find a another way so that I can persist my file name
File file = writeToFile(uploadedInputStream,
    fileLocation);
return Response.status(Response.Status.OK).entity(uploadAndGetDetails(file, requestMeta)).build();
}

1 个答案:

答案 0 :(得分:0)

您可以考虑UUID

不保证是唯一的,但复制的可能性极低:

String uuid = UUID.randomUUID().toString();