gpt4 book ai didi

java - 如何从 session 中获取对象?

转载 作者:行者123 更新时间:2023-12-01 04:27:48 25 4
gpt4 key购买 nike

正如标题所示,我想问如何从 session 中获取对象?

我正在尝试上传图像并将其保存在对象中。登录后(相同的用户名和密码)我在 session 中设置用户,

session("user",username);

例如现在,我使用“Admin”登录:

session("user",username); // now my session = Admin

然后我将用户重定向到上传页面。我保存这张照片的方式如下:

  MultipartFormData body = request().body().asMultipartFormData();
FilePart picture = body.getFile("picture");
if (picture != null) {
String fileName = picture.getFilename();
String contentType = picture.getContentType();
File file = picture.getFile();
Photo photo1 = new Photo();
photo.name=fileName;
photo.path=file.getAbsolutePath();
photo.save();

如何将这张图片保存到管理员中?

我知道我必须有一个对象来添加这张照片,例如:

Users user = new Users();
Photo photo = new Photo();
photo.name=fileName;
photo.path=file.getAbsolutePath();
user.photo.add(photo1); // I added @ManytoOne in Photo.java
photo.save();

抱歉,如果我的问题很愚蠢:(

最佳答案

将上传的文件存储在数据库中并不是最佳选择,因为它通常非常昂贵。相反,只需将图像保存在文件系统上,然后将其路径保存为通用 String

当然,您应该确保具有唯一的文件名,以避免覆盖其他上传的文件,因此请检查 ie. myphoto.jpg 不存在,如果只是将新文件重命名为 myphoto_01.jpgmyphoto_02.jpg 等。您也可以每次上传时在文件名中添加一些时间戳,这样您就不需要检查文件名是否唯一。

如果您要保存用户的头像,则不需要单独的模型,只需向 Users 模型添加两个字段 - avatarNameavatarPath,均为String

最后 - 如果您的用户可以保存未知数量的图像,那么您所展示的单独模型看起来是一个不错的选择。

关于 session :

documentation所示session 存储String - 即:session("connected") 包含“已登录”用户的电子邮件。当然,这是非常简单的示例,在现实世界中它应该得到更好的保护。

一般来说,在 session 中,您需要存储 User 对象的一些唯一 key ,最好不能对该 key 进行逆向工程或猜测,因此它可以是一些随机哈希值的示例与 User 对象一起存储。从 session 中读取该哈希值后,您可以通过此键找到用户,等等!

关于java - 如何从 session 中获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18348579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com