I took a more conventional approach. I created a DatabaseImage page
that streams the image from the database.
In the TML of the page that wants to embed an image from the database:
<img src="${imageLink}"/>
In the Java:
@Inject
private PageRenderLinkSource pageRenderLinkSource;
public Link getImageLink()
{
String encryptedContext = DatabaseImage.encrypt(...);
return
pageRenderLinkSource.createPageRenderLinkWithContext(DatabaseImage.class,
encryptedContext);
}
The encrypt method basically encrypts everything I need (table names,
primary keys, etc) to go find the database image and stuffs it into
the link's context. At runtime, I end up with requests from the
browser like:
GET
/MyApp/databaseimage/$002faiNglawZWKGHKrl$002fgpKneotYRwaq9gMk3dPr5zQkW8KkoezyRBm0TutynHstG0$002fyn$002b6izoD$002f$002f9V$000a$002fqAXmUmgxQ$003d$003d
Ugly URL, but it works. In the DatabaseImage page itself I have:
public StreamResponse onActivate(String context)
{
...
}
that decrypts the encrypted context, finds the image blob stored in
the database, and streams it out as the response.
mrg
On Thu, Dec 9, 2010 at 7:22 AM, Igor Drobiazko <[email protected]> wrote:
> There is no documentation for it as this is not an often use case. However,
> just provide you own implementation of AsssetFactory, build it or bind it in
> your module and make the contribution:
>
> public void contributeAssetSource(MappedConfiguration<String,
> AssetFactory> configuration, @InjectService("DbAssetFactory") AssetFactory
> dbAssetFactory) {
> configuration.add("db", dbAssetFactory);
> }
>
> Now it is up to you to implement the AssetFactory.
>
> On Thu, Dec 9, 2010 at 11:53 AM, Gunnar Eketrapp
> <[email protected]>wrote:
>
>> Hi!
>>
>> I would like to store uploaded images in the database and then use them in
>> template files.
>>
>> Are there any examples of how to do this? I.e. how to define a new
>> AssetFactory and contribute it to the AssetSource service configuration.
>>
>> Thanks in advance,
>> Gunnar Eketrapp (from a very cold and snowy Stockholm)
>>
>> ==================================
>> The doc says ...
>>
>> New Asset Domains
>>
>> If you wish to create new domains for assets, for example to allow assets
>> to
>> be stored on the file system or in a database, you may define a new
>> AssetFactory and contribute it to the AssetSource service configuration.
>>
>> ===================================
>>
>
>
>
> --
> Best regards,
>
> Igor Drobiazko
> http://tapestry5.de
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]