on 06-26-2008 7:59 AM
Hi All,
I have a scenario where I want to upload and download an image in KM in WebDynpro Java Application in DI.
I have tried this in a standalone application and it is working fine but i am not successful in DI.
Please suggest if something different needs to be done in DI environment.
Any pointers would be appreciated.
B'Rgds
Bir
go through these blogs:
[getting images from KM|https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/5275] [original link is broken] [original link is broken] [original link is broken];
you can get those .jar from usr<SID>JC<nr>j2eeclusterserver0appssap.comirjservlet_jspirj oot
com.sap.security.api.jar :
usr<SID>JC<nr>j2eeclusterserver0inextcom.sap.security.core.sda
nikhil
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi see the foolowing
Introduction
Recently in my project I came across a scenario where my Web Dynpro Project had to pick the image from KM. The images to be displayed will be placed in KM. This will avoid loading the images into the Web DynPro project. More over when you have KM installed on your EP server, one can use it for storing backend data and resources. The KM Admin will be undertaking this task of uploading the images to predefined folder structures. Through the application path to the image will be provided dynamically giving you the flexibility to decide which image to be displayed according to the business logic.
Advantage:
If the image is in KM repository, admin can change the image at any point of time without redeploying the application. Content Managers can have much more flexibility.
Let's begin from the KM configuration.
1) Create a folder in KM with name Alice In Wonderland.
2) Upload the image alice.gif.
3) Create a Web Dynpro project.
The first thing one need to configure is the Web Dynpro Sharing Reference.
This can be done by selecting the project->Properties->Web Dynpro Refernces-> Sharing References.
Add the following entry here
PORTAL:sap.com/com.sap.km.application
4) Jar files to be added.
bc.rf.framework_api.jar
bc.rf.global.service.urlgenerator_api.jar
bc.sf.framework_api.jar
bc.util.public_api.jar
com.sap.security.api.ep5.jar
com.sap.security.api.jar
prtapi.jar
Now the project you create can access KM.
5) Add a UI Element for Image in the view.
Create a context attribute-String type with name "image".
Map the image ui element(Property->Source) to the context attribute "image" just created.
In the normal scenario we used to provide the image name here and image will be included with the project. But here we will take the image dynamically from KM.
6) Detailed coding.
I have written a java class ImageInfo, where a method "IWDWebResource getImage(String path)" which get called from the webdynpro view. The method will "return IWDWebResource"
Method IWDWebResource getImage(String path)
Imports to be added
java.io.BufferedInputStream;
java.io.IOException;
com.sap.security.api.IUser;
com.sap.tc.webdynpro.services.sal.um.api.IWDClientUser;
com.sap.tc.webdynpro.services.sal.um.api.WDClientUser;
com.sap.tc.webdynpro.services.sal.um.api.WDUMException;
com.sap.tc.webdynpro.services.sal.url.api.IWDWebResource;
com.sap.tc.webdynpro.services.sal.url.api.WDURLException;
com.sap.tc.webdynpro.services.sal.url.api.WDWebResource;
com.sap.tc.webdynpro.services.sal.url.api.WDWebResourceType;
com.sapportals.portal.security.usermanagement.UserManagementException;
com.sapportals.wcm.repository.AccessDeniedException;
com.sapportals.wcm.repository.IResource;
com.sapportals.wcm.repository.IResourceContext;
com.sapportals.wcm.repository.IResourceFactory;
com.sapportals.wcm.repository.ResourceContext;
com.sapportals.wcm.repository.ResourceFactory;
com.sapportals.wcm.util.content.ContentException;
com.sapportals.wcm.util.uri.RID;
com.sapportals.wcm.util.usermanagement.WPUMFactory;
//Getting the user......
IWDClientUser wdClientUser = WDClientUser.getCurrentUser();
IUser sapUser = wdClientUser.getSAPUser();
com.sapportals.portal.security.usermanagement.IUser ep5User =
WPUMFactory.getUserFactory().getEP5User(sapUser);
//Getting the Resource.........
IResourceContext resourseContext = new ResourceContext(ep5User);
IResourceFactory resourseFactory = ResourceFactory.getInstance();
//path to the KM Folder ("/documents/Alice In Wonderland/alice.gif")
RID pathRIDimg = RID.getRID(path);
com.sapportals.wcm.repository.IResource resourceimg =
resourseFactory.getResource(pathRIDimg, resourseContext);
//Reading the image file......
BufferedInputStream bufIn =
new BufferedInputStream(resourceimg.getContent().getInputStream());
byte[] imagebyte = new byte[bufIn.available()];
bufIn.read(imagebyte);
//Mapping the image as a WebResource....
IWDWebResource webResource = WDWebResource.getWebResource(
imagebyte,
WDWebResourceType.JPG_IMAGE);
7)In the view we use following code to call the above method of the class-ImageInfo
ImageInfo imageInfo = new ImageInfo ();
IWDWebResource webResource = imageInfo.getimage("/documents/Alice In Wonderland/alice.gif ");
😎 Now finally webResource is being mapped to context attribute image
wdContext.currentContextElement().setImage(webResource.getURL());
9)The image will be displayed.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.