2017-06-02 38 views
0

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

回答

0

你可以考虑UUID

它不能保证是唯一的,但重复的概率非常低:

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

我不想重命名文件。我正在寻找其他方式,而无需重命名。 – arjun

+0

@arjun您可以创建一个具有唯一名称的目录,并将原始名称的文件存储到新创建的目录中。 –

+0

@arjun它可能有点不好意思,但是如果你的文件系统支持它,你可以将_original_文件名作为[文件的属性]保留下来(http://docs.oracle.com/javase/8/docs/ API/JAVA/NIO /文件/ Files.html#的setAttribute-java.nio.file.Path-java.lang.String中-java.lang.Object继承-java.nio.file.LinkOption ...-)。 –