0

J'essaie d'écrire une chemise REST api pour télécharger des fichiers. Après avoir reçu le fichier, je dois enregistrer le fichier dans un dossier temporaire et envoyer le fichier à un autre serveur pour le traitement. Je suis coincé à la partie où je sauvegarde le fichier dans un dossier temporaire avec le nom de fichier reçu. Comment gérer les fichiers téléchargés à partir de plusieurs clients avec le nom. Parce que les fichiers portant le même nom sont remplacés par le dernier fichier. Je ne veux pas renommer le fichier. Y at-il un moyen de gérer cela.Jersey recevoir un fichier multipart et le stocker dans le dossier temporaire

Ci-dessous mon implémentation actuelle

@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(); 
} 

Répondre

0

Vous pourriez envisager UUID.

Il n'est pas garanti d'être unique, mais la probabilité d'un double est extrêmement faible:

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

Je ne veux pas renommer le fichier. Je cherche d'autres moyens sans renommer. – arjun

+0

@arjun Vous pouvez créer un répertoire avec un nom unique et stocker le fichier avec le nom d'origine dans le répertoire nouvellement créé. –

+0

@arjun Cela peut être un peu hacky, mais si votre système de fichiers le supporte, vous pouvez conserver le nom du fichier _original_ comme [attribut du fichier] (http://docs.oracle.com/javase/8/docs/ api/java/nio/fichier/Files.html # setAttribute-java.nio.file.Path-java.lang.String-java.lang.Object-java.nio.file.LinkOption ...-). –