Expand my Community achievements bar.

Radically easy to access on brand approved content for distribution and omnichannel performant delivery. AEM Assets Content Hub and Dynamic Media with OpenAPI capabilities is now GA.
SOLVED

AEM 6.5 Documents for Download.

Avatar

Level 4

We are developing a OSGI module that uses a SlingRequest as input. 

 

We have no issues with the input. These are uploaded documents by authenticated users.

The  module will use various document services to generate a new document.

 

Questions.

Is there any sample document/website on how these documents can be stored in the JCR, to be available for the user for download?

How do we generate a URL that we can return through the SlingResponse for the user to use as a link access the document?

 

 

1 Accepted Solution

Avatar

Correct answer by
Level 10

Hi @Eric_Stricker,

So if I've understood, you want to:

  1. Create documents programatically
  2. Provide a download link to a user
  3. Store that document long-term

If that's the case, then the simplest solution I can think of is to use the DAM  You can run your business logic to create a document (a PDF for example) and then store it as a DAM asset using the AssetManager API (javadoc here). Once you have stored the asset, you can simply send a link pointing to its location in the DAM. If you want to share the asset with non-authorized users, you can use the Asset Link Sharing feature.

Does all of that answer your requirements?

View solution in original post

5 Replies

Avatar

Correct answer by
Level 10

Hi @Eric_Stricker,

So if I've understood, you want to:

  1. Create documents programatically
  2. Provide a download link to a user
  3. Store that document long-term

If that's the case, then the simplest solution I can think of is to use the DAM  You can run your business logic to create a document (a PDF for example) and then store it as a DAM asset using the AssetManager API (javadoc here). Once you have stored the asset, you can simply send a link pointing to its location in the DAM. If you want to share the asset with non-authorized users, you can use the Asset Link Sharing feature.

Does all of that answer your requirements?

Avatar

Level 4
Thank you. Yes, it looks oke. Actual the document will be for short term only (ie, 1 or 2 hours), but we can write a separate cron job to remove document older than x seconds.

Avatar

Level 4
Thank you. Yes, it looks oke. Actual the document will be for short term only (ie, 1 or 2 hours), but we can write a separate cron job to remove document older than x seconds. Let me read about this further and try to out.

Avatar

Level 4

In the end I used:

AssetManager to store the asset in the JCR

Externalizer to get the proper URL for the asset

AccessControlManager to assign read access to the user for the asset

job "ScheduledTask implements Runnable" task to cleanup the JCR after a certain time to make sure the JCR is kept clean

 

 

Avatar

Level 10
That sounds like a good solution Happy to help.