【问题标题】:Jersey receive multipart file and store it in temp folderJersey 接收多部分文件并将其存储在临时文件夹中
【发布时间】:2017-06-02 07:44:44
【问题描述】:

我正在尝试编写一个球衣 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();
}

【问题讨论】:

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


    【解决方案1】:

    你可以考虑UUID

    不保证唯一但重复的概率极低:

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

    【讨论】:

    • 我不想重命名文件。我正在寻找其他方式而不重命名。
    • @arjun 您可以创建一个具有唯一名称的目录,并将原始名称的文件存储到新创建的目录中。
    • @arjun 这可能有点 hacky,但如果您的文件系统支持它,您可以将 original 文件名保存为 attribute of the file
    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多