[opencms-dev] Access a file by uuid

Florian Gutmann blackfeet at gmx.at
Mon Dec 22 13:29:41 CET 2008


Hi,

i think you have to use:
CmsFile file = CmsFile.upgrade(res, cmso);

instead of:
CmsFile file = new CmsFile(res);

If you want to read files by UUID from VFS you should be sure to use the
correct id.
There are two types of id's: the structureId and the resourceId.
cmsObject.readResource needs the strucutureId and not the resource id!
If you look at those id's they are nearly identically so you can oversee
that difference easyly.

Greetings,

Florian

-----Ursprüngliche Nachricht-----
Von: opencms-dev-bounces at opencms.org
[mailto:opencms-dev-bounces at opencms.org] Im Auftrag von Yves Glodt
Gesendet: Montag, 22. Dezember 2008 12:53
An: The OpenCms mailing list
Betreff: Re: [opencms-dev] Access a file by uuid

Hello again,

I can also access the file by path, it will be ok for my application...
I have this jsp, which is called logo.jpg.jsp:


<%@ page session="true" import="org.opencms.main.*, 
org.opencms.jsp.*,org.opencms.file.*,org.opencms.util.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%

CmsObject cmso = OpenCms.initCmsObject("Guest");
cmso.loginUser("user", "pass");
CmsResource res = cmso.readResource("/sites/my.site.com/data/123/logo.jpg");
CmsFile file = new CmsFile(res);
response.setContentLength(file.getLength());

OutputStream o = response.getOutputStream();
o.write(file.getContents());
o.flush();
o.close();

%>

But somehow it ouputs 0 bytes, even I know that the file has 8009 bytes (I 
checked by writing it to System.out) The user has access, I tried as admin
but 
it makes no difference

What can be wrong here ?


On Monday 22 December 2008, Sebastian Himberger wrote:
> Hi,
>
> I currently have no idea about the UUID thing.
>
> Regarding the input stream: You can simply do a:
>
> InputStream is = new ByteArrayInputStream(cmsFile.getContents());
>
> best regards,
> Sebastian
>
> Yves Glodt schrieb:
> > On Thursday 11 December 2008, Sebastian Himberger wrote:
> >> Hi,
> >>
> >> this works for me:
> >>
> >> <%@ page
> >>
import="org.opencms.file.*,org.opencms.jsp.*,org.opencms.util.*,org.open
> >>cms .main.*" %>
> >> <%
> >>
> >> String uuid = "ceece147-3144-11dc-a69a-5f50d3bd539c";
> >>
> >> CmsObject cmso = OpenCms.initCmsObject("Guest");
> >> cmso.loginUser("Admin", "thePassWord");
> >>
> >> CmsResource res = cmso.readResource(new CmsUUID(uuid));
> >>
> >> out.println(res.getName());
> >>
> >> %>
> >>
> >> Are you sure the user who logs in has read access to the resource?
> >
> > Well, I guess to...
> >
> > I am getting this exception:
> > org.opencms.file.CmsVfsResourceNotFoundException: Error reading resource
> > with the ID aec33c59-c50d-11dd-a9f2-0015174f605e.
> >
> > Note that this works:
> > CmsResource res =
> > cmso.readResource("/sites/my.site.com/data/123/logo.jpg");
> > //System.out.println(res.getResourceId().toString());
> >
> >
> > And this not:
> >
> > CmsResource res = cmso.readResource(new CmsUUID("aec33c59-c50d-11dd-
> > a9f2-0015174f605e"));
> >
> > So I guess my user is ok. The uuid I use is the one I saw in the print
> > output of the previous example...
> >
> > Another question came up.... how can I output this CmsResource which is
> > image/jpg from the jsp? Is it possible to cast it to a FileInputStream ?
> >
> > Best regards,
> > Yves
> >
> >> best regards,
> >> Sebastian
> >>
> >> Yves Glodt schrieb:
> >>> Hello,
> >>>
> >>>
> >>> is it possible to find and access a file in the VFS by it's uuid?
> >>>
> >>>
> >>> Background: I have certains PDF documents in my vfs which are not
> >>> accessible
> >>> for any user, logged in or not, and I want to serve them with
> >>> obfuscated urls
> >>> à la /getFile.jsp?id=xxxxxx and it would be nice if I could just use
> >>> the uuid
> >>> to identify them.
> >>> I use OpenCms 7.0.4. Maybe there is another way to achieve this...?
:-)
> >>>
> >>>
> >>> Best regards,
> >>> Yves
> >
> > _______________________________________________
> > This mail is sent to you from the opencms-dev mailing list
> > To change your list options, or to unsubscribe from the list, please
> > visit http://lists.opencms.org/mailman/listinfo/opencms-dev
>
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev




_______________________________________________
This mail is sent to you from the opencms-dev mailing list
To change your list options, or to unsubscribe from the list, please visit
http://lists.opencms.org/mailman/listinfo/opencms-dev




More information about the opencms-dev mailing list