Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
BedrockMission!

Learn more

View all

Sign in to view all badges

SOLVED

How to read a file from file system in AEM

Rajeev_Kumar
Level 3
Level 3

Is there a way to read a file as Java.IO.File in AEM, because I need to pass a Java file object to a google api method and file is present on my computer file system. I tried various method like adapting a resource to File or getting file from BundleContext, but non of these worked for me.

Actually to get a GoogleCredential object I need to pass a service account email id, a json factory object and a .p12 file as Java.io.File object (which google provide for authentication).But I am not able to read the .p12 file from my file system or from project jar or or from content hierarchy.

Please suggest how can I read a file that is present on my file system in aem project.

Thanks in advance.

1 Accepted Solution
kautuk_sahni
Correct answer by
Community Manager
Community Manager

Hi 

Please red the following article:-

Link:- http://www.wemblog.com/2011/10/how-to-read-external-file-in-cq.html (create a custom component/service to read file from FileSystem or read it from JCR after bring it to JCR)

How to read an external file in CQ

Use Case: You want to read something from external file

Solution : There are multiple ways you can do this I will mentioned two of them here,

1) You can put them under /resources folder under /src/main for example if you want to read a file called "test.txt" then you can put file under /src/resources/<any-sub-foler>/<file-to-read>

Then use following code to read file 
InputStream stream = getClass().getResourceAsStream("<file-to-read>");
in above case it would be InputStream stream = getClass().getResourceAsStream("/test.txt");

Good practice is to follow convention, For example if your source code is under /src/main/java/com/test/mytest/Test.java Then your resource should be in location /resource/com/test/myTest/<Your File>

Then you can use something like


InputStream in = Test.class.getResourceAsStream("<Your File>");


2) You can put file in repository (Any repository location is file) and use Node data as stream to read.

then use following code,
InputStream in = node.getNode("jcr:content").getProperty("jcr:data").getStream();

 

Another reference article :- https://helpx.adobe.com/experience-manager/using/uploading-files-aem1.html

//Uploading of images from FileSystem and keeping it in JCR.

 

I hope this would help you.

Thanks and Ragards

Kautuk Sahni

View solution in original post

2 Replies
kautuk_sahni
Correct answer by
Community Manager
Community Manager

Hi 

Please red the following article:-

Link:- http://www.wemblog.com/2011/10/how-to-read-external-file-in-cq.html (create a custom component/service to read file from FileSystem or read it from JCR after bring it to JCR)

How to read an external file in CQ

Use Case: You want to read something from external file

Solution : There are multiple ways you can do this I will mentioned two of them here,

1) You can put them under /resources folder under /src/main for example if you want to read a file called "test.txt" then you can put file under /src/resources/<any-sub-foler>/<file-to-read>

Then use following code to read file 
InputStream stream = getClass().getResourceAsStream("<file-to-read>");
in above case it would be InputStream stream = getClass().getResourceAsStream("/test.txt");

Good practice is to follow convention, For example if your source code is under /src/main/java/com/test/mytest/Test.java Then your resource should be in location /resource/com/test/myTest/<Your File>

Then you can use something like


InputStream in = Test.class.getResourceAsStream("<Your File>");


2) You can put file in repository (Any repository location is file) and use Node data as stream to read.

then use following code,
InputStream in = node.getNode("jcr:content").getProperty("jcr:data").getStream();

 

Another reference article :- https://helpx.adobe.com/experience-manager/using/uploading-files-aem1.html

//Uploading of images from FileSystem and keeping it in JCR.

 

I hope this would help you.

Thanks and Ragards

Kautuk Sahni

View solution in original post

mohitaem
Level 2
Level 2

Hi

Still, we are not able to load the file which is present in the resources folder.
Name of the file geodb.mmdb.
Code for loading the file:

We are trying to load the file for adding Maxmind geoip2 solution.

AEM version : 6.3

Java version : 1.8