Java 如何为我正在上传的文件指定一个随机文件名?
我正在将一个文件上载到一个文件夹中,我已将文件名指定为“1.jpg”,因此当我上载一个新文件时,它将覆盖现有文件, 那么我如何给我上传的文件一个随机的文件名呢 我的上传代码在这里Java 如何为我正在上传的文件指定一个随机文件名?,java,spring,Java,Spring,我正在将一个文件上载到一个文件夹中,我已将文件名指定为“1.jpg”,因此当我上载一个新文件时,它将覆盖现有文件, 那么我如何给我上传的文件一个随机的文件名呢 我的上传代码在这里 @RequestMapping(value = "/event/uploadFile",headers=("content-type=multipart/*"), method = RequestMethod.POST,consumes ={"application/x-www-form-urlencoded"})
@RequestMapping(value = "/event/uploadFile",headers=("content-type=multipart/*"), method = RequestMethod.POST,consumes ={"application/x-www-form-urlencoded"})
//String quote_upload=C:\fakepath\images.jpg
public @ResponseBody
String uploadFileHandler(
@RequestParam MultipartFile file) {
System.out.println("Creating the directory to store file");
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// Creating the directory to store file
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "tmpFiles");
if (!dir.exists())
dir.mkdirs();
// Create the file on server
File serverFile = new File(dir.getAbsolutePath()
+ File.separator+"1.jpg");
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
System.out.println("************Server File Location="
+ serverFile.getAbsolutePath());
//return "You successfully uploaded file=" + name;
} catch (Exception e) {
System.out.println("************failes"+ e.getMessage());
//return "You failed to upload " + name + " => " + e.getMessage();
}
//return "You failed to upload " + name
//+ " because the file was empty.";
}
System.out.println("hello");
return "hello";
}
如果你不希望这些名字有任何合理的顺序,我可能会同意。像这样的东西应该可以做到:
String filename = UUID.randomUUID().toString();
如果您担心UUID的唯一性,请查看。简而言之,您不太可能获得两个相同的ID。如果您不希望名称有任何合理的顺序,我可能会同意。像这样的东西应该可以做到:
String filename = UUID.randomUUID().toString();
如果您担心UUID的唯一性,请查看。简而言之,您不太可能获得两个相同的ID。您可以使用
Calendar.getInstance().getTimeInMillis();
它将以毫秒为单位返回时间。如果您对此不确定,请向其添加一些随机数。您可以使用
Calendar.getInstance().getTimeInMillis();
它将以毫秒为单位返回时间。如果您对此不确定,请向其添加一些随机数
String fileName=UUID.randomUUID().toString()+您的文件扩展名代码>
if(serverFile.exists())
String fileName=UUID.randomUUID().toString()+您的文件扩展名代码>
if(serverFile.exists())
File.createTempFile(String prefix, String suffix, File directory)
作为缔约国:
在指定目录中创建新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:
File.createTempFile(String prefix, String suffix, File directory)
作为缔约国:
在指定目录中创建新的空文件,使用给定的前缀和后缀字符串生成其名称。如果此方法成功返回,则可以保证:
您只需获取一个随机大整数,并为文件命名,如下所示:
String fileExtension = ".jpg";
String fileName = Integer.toString(new Random().nextInt(1000000000)) + fileExtension;
您只需获取一个随机大整数,并为文件命名,如下所示:
String fileExtension = ".jpg";
String fileName = Integer.toString(new Random().nextInt(1000000000)) + fileExtension;
一个选项是从
random
附加当前时间(最多秒)和随机数生成器。您可以使用java.util.UUID.randomUUID()
方法为serverFile
创建唯一名称一个选项是附加当前时间(最多秒)和来自random
的随机数生成器。您可以使用java.util.UUID.randomuid()
方法为serverFile
创建唯一名称,这可能会导致重复。。nextInt可以返回重复的值。这可能导致重复。。nextInt可以返回重复的值。。