2011-06-16 17 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

相關問題