[jcifs] Making a connection & Loading an image

Laura McCord mccordl at southwestern.edu
Tue Jun 26 04:20:27 GMT 2007


I have a jsp page that calls a servlet through an img tag, <img  
src="image?file=Image002/20060725/273251aaaa.jpg" />. The doGet method  
retrieves the image through the getPhoto method where I use jcifs to  
connect to the filesystem to retrieve the file. However, when I print  
out the contentLength to verify that in fact I loaded the image it  
comes out empty. I made sure that the connection was made by testing  
on a path that I know does not exist, jcifs.smb.SmbException: The  
system cannot find the file specified. When I give the correct path I  
do not get an exception but I get a broken image displayed. Can  
someone tell me what I am doing wrong on my getPhoto method?

Thanks.



   protected void doGet(HttpServletRequest req,HttpServletResponse  
res) throws ServletException, IOException
        {
         // Get file name from request.
         String imageFileName = req.getParameter("file");
         // Check if file name is supplied to the request.
         if (imageFileName == null) {
             return;
         }
         System.err.println(imageFileName);
         // Prepare streams.
         BufferedInputStream in = null;
         BufferedOutputStream out = null;
         try {
             // Open image file.
             in = new BufferedInputStream(getPhoto(imageFileName));    
//get Photo
             out = new BufferedOutputStream(res.getOutputStream());
             int contentLength = in.available();
             if(contentLength == 0 ){
                 System.err.println("BAD IMAGE");
             }else{
                 System.err.println("Good Image");
             }
             // Init servlet response.
             res.setContentLength(contentLength);
             res.setContentType("image/jpeg");
             out = new BufferedOutputStream(res.getOutputStream());
             // Write file contents to response.
             while (contentLength-- > 0) {
                 out.write(in.read());
             }
             // Finalize task.
             out.flush();
         } catch (IOException e) {
             e.printStackTrace();
         }
         finally {
             // Gently close streams.
             if (in != null) {
                 try {

         in.close();
                 } catch (IOException e) {
                    e.printStackTrace();
                 }
             }
             if (out != null) {
                 try {
                     out.close();
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         }
      }

         public static InputStream getPhoto(String imgPath){
                 SmbFileInputStream in = null;
                 System.err.println("Test1"); //make sure methood is  
being called
                 Config.setProperty("jcifs.netbios.wins", "ip");
                 Config.setProperty("jcifs.smb.client.domain", "domain");
                 Config.setProperty("jcifs.smb.client.username", "user");
                 Config.setProperty("jcifs.smb.client.password", "secret");
                 try{
                    in = new SmbFileInputStream("smb://ip/idworks/" + imgPath);
                    System.err.println("Test2");
                 }catch(Exception e){
                         e.printStackTrace();
                         System.err.println("Test3");
                 }
                 System.err.println("Test4");
                 return in;

         }








More information about the jcifs mailing list