我正在开发一个用户可以提供文本信息和图像的应用程序。我想在文件系统和数据库中保存图像,我将添加每个用户到其图像的链接所以我需要将用户ID添加到图像名称以不获取具有相同名称的图像。我正在使用SPRING MVC。 在我的控制器中:
@RequestMapping(value="/save",method=RequestMethod.POST)
public String add ( @RequestParam("prix") Long prix,
RequestParam("adresse") String ville,
@RequestParam("categorie") String categorie,
@RequestParam("photos") MultipartFile file,
) throws FileNotFoundException
{
String chemin=null;
if (!file.isEmpty())
{
try {
String orgName = file.getOriginalFilename();
// this line to retreive just file name
String
name=orgName.substring(orgName.lastIndexOf("\\")+1,orgName.length());
chemin="e:\\images\\"+name; //here I want to add id (auto generated)
File file1=new File(chemin);
file.transferTo(file1);
} catch (IOException e) {
e.printStackTrace();
}
}
annonce.setImage(chemin);
annonce.setTitre(prix);
annonce.setCorps(ville);
annonce.setPrix(cetegorie)
annoncedao.save(annonce);
return "SuccessAddAnnonce";
}
但是我无法得到ID女巫是自动生成的,所以我不能把它抛出@RequestParam像地址或类别,因为它是自动生成的,我仍然没有它,直到我们称为保存方法巫婆是最后一次。 欢迎任何建议。
答案 0 :(得分:0)
您可以为每个用户生成一个随机ID,并将其分配给特定用户,从而也将其图像名称(我想在此打算做)。
我将简单地说明一下。
// Get a random ID coressponding to the user address or whatever, here i will just use address
MessageDigest digest = MessageDigest.getInstance("MD5");
byte[] hash = digest.digest(ville.getBytes("UTF-8"));
String randomId = DatatypeConverter.printHexBinary(hash);
// Here you have a uniqueID for an address.
// You could have just used ville.hashCode() also but it might give you collisions with some different Strings.
如果输入:" 64th Street,Downtown,StackOverFlow"然后
randomId = 8AB126F8EBC0F7B5CCBBEB3E21582ADF