File upload 如何在Play framework中将默认图像分配给Blob对象?

File upload 如何在Play framework中将默认图像分配给Blob对象?,file-upload,blob,playframework,File Upload,Blob,Playframework,我看了这篇好文章 并有一个完美的工作图像上传解决方案 我的问题是,如果用户没有选择任何图像,如何在保存期间分配默认图像(可能存储在服务器中) 如果(!user.photo) user.photo=?; user.save(); 我能想到的一个黑客方法是上传默认图像,查看哪个UID“Play”存储在/tmp目录中,并在上面分配它。有没有一个优雅的命名*解决方案 当我说named时,我的意思是我希望代码看起来像(这意味着我知道我在做什么,如果有多张图片,我还可以编写优雅的自动代码) us

我看了这篇好文章

并有一个完美的工作图像上传解决方案

我的问题是,如果用户没有选择任何图像,如何在保存期间分配默认图像(可能存储在服务器中)


如果(!user.photo)
user.photo=?;
user.save();

我能想到的一个黑客方法是上传默认图像,查看哪个UID“Play”存储在/tmp目录中,并在上面分配它。有没有一个优雅的命名*解决方案

  • 当我说named时,我的意思是我希望代码看起来像(这意味着我知道我在做什么,如果有多张图片,我还可以编写优雅的自动代码)

user.photo=“images/default/male.jpg”

而不是(这意味着我只是在进行黑客攻击,我无法对图片列表进行优雅的扩展)


user.photo=“c0109891-8c9f-4b8e-a533-62341e713a21”


提前感谢

我假设您可以将默认图像存储在应用程序源文件夹中的某个位置并使用

user.photo.set(new FileInputStream(photo), MimeTypes.getContentType(photo.getName()));

保存数据。照片只是一个
文件
对象,因此您可以获取默认图像的引用并使用它。

我假设您可以将默认图像存储在应用程序源文件夹中的某个位置并使用它

user.photo.set(new FileInputStream(photo), MimeTypes.getContentType(photo.getName()));

保存数据。照片只是一个
文件
对象,因此您可以获取默认图像的引用并使用它。

我一直采取的方法是不更改空图像的模型,而是在视图中执行某些操作以显示默认图像(如果图像不存在)。我认为这是一种更好的方法,因为您正在破坏模型以用于显示,这是一种糟糕的做法(例如,您可能希望能够看到所有未选择图像的人)

要实现这一点,您只需在
Blob
字段上使用
exists()
方法即可。代码看起来像

#{if user.photo.exists()}
  <img src="@{userPhoto(user.id)}">
#{/if}
#{else}
  <img src="@{'public/images/defaultUserImage.jpg'}">
#{/else}
#{if user.photo.exists()}
#{/if}
#{else}
#{/else}

在上面的代码中,我假设您正在使用Lunatech文章中描述的动作
userPhoto
渲染图像。

我一直采用的方法是不更改空图像的模型,而是在视图中执行某些操作,以显示默认图像(如果图像不存在)。我认为这是一种更好的方法,因为您正在破坏模型以用于显示,这是一种糟糕的做法(例如,您可能希望能够看到所有未选择图像的人)

要实现这一点,您只需在
Blob
字段上使用
exists()
方法即可。代码看起来像

#{if user.photo.exists()}
  <img src="@{userPhoto(user.id)}">
#{/if}
#{else}
  <img src="@{'public/images/defaultUserImage.jpg'}">
#{/else}
#{if user.photo.exists()}
#{/if}
#{else}
#{/else}

在上面的代码中,我假设您正在使用Lunatech文章中描述的动作
userPhoto
渲染图像。

一个更好的保持数据完整性的解决方案。ThanksA是保持数据完整性的更好的解决方案。谢谢尽管我在使用Codemwnci建议,我也会尝试你的建议,以扩大我对你在上述代码中使用的对象的了解。谢谢尽管我在使用Codemwnci建议,我也会尝试你的建议,以扩大我对你在上述代码中使用的对象的了解。谢谢