2011-06-16 57 views
1

我跟着这个好文章 http://www.lunatech-research.com/playframework-file-upload-blob如何在Play框架中将默认图像分配给Blob对象?

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

我的问题是,如果用户不选择任何图像,我怎么指定保存期间的默认图像(可能存储在服务器中)?

,我能想到的

if (!user.photo) user.photo= ?; user.save();

一劈为上传的默认图像,看看哪些UID在/ tmp目录下的“播放”商店和分配上面。有没有一个优雅的*命名解决方案?

  • ,当我说叫,我的意思是我想要的代码看起来像(这意味着我知道我在做什么,我也可以写优雅的自动代码,如果有一个以上图片)

user.photo= "images/default/male.jpg"

,而不是(这意味着我只是黑客,我不能优雅地扩展它用于图片列表)

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

在此先感谢

回答

3

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

要实现此目的,在您的视图中,您可以简单地在Blob字段上使用exists()方法。该代码看起来像

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

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

+0

更好的解决方案,保留数据完整性。谢谢 – roshan 2011-06-17 14:46:39

1

我认为你可以在一些地方保存默认的图像在你的应用程序的源文件夹,并使用

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

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

+0

尽管我使用的是Codemwnci的建议,但我也会试着扩展您对上述代码中使用的对象的知识。 谢谢 – roshan 2011-06-17 17:00:46

相关问题