[jcifs] Need help loading a file...please

Frode E. Moe frode at CoreTrek.no
Thu Jun 28 14:17:08 GMT 2007


On Thu, Jun 28, 2007 at 08:23:54 -0500, Laura McCord wrote:
> Well, I think I am getting a little but closer. It at least is giving me 
> the total number of bytes transferred. So, with this said perhaps it is 
> actually getting the image. However, I still can't get the image to 
> actually display.
> 
> My logs indicate:
> ######################
> 172176 bytes transfered in 0 seconds at 172Kbytes/sec
> 
> The way I am testing it is by using a jsp file:
> <img src="image?file=Image002/20060725/273251.jpg" />
> 
> 
>   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.
> 
>         // Open image file.
>         Config.setProperty("jcifs.netbios.wins", "ipaddress");
>         Config.setProperty("jcifs.smb.client.domain", "domain");
>         Config.setProperty("jcifs.smb.client.username", "user");
>         Config.setProperty("jcifs.smb.client.password", "secret");
> 
>         SmbFile f = new SmbFile("smb://ipaddress/idworks/" + imageFileName);
>         SmbFileInputStream in = new SmbFileInputStream( f );
>         res.setContentType("image/jpeg");
>         FileOutputStream out = new FileOutputStream( f.getName() );
> 
>         long t0 = System.currentTimeMillis();
> 
>         byte[] b = new byte[8192];
>         int n, tot = 0;
>         long t1 = t0;
>         while(( n = in.read( b )) > 0 ) {
>             out.write( b, 0, n );
>             tot += n;
>             System.err.print( '#' );
>         }
> 
>         long t = System.currentTimeMillis() - t0;
> 
>         System.err.println();
>         System.err.println( tot + " bytes transfered in " + ( t / 1000 ) + 
>         " seconds at " + (( tot / 1000 ) / Math.max( 1, ( t / 1000 ))) + 
>         "Kbytes/sec" );
>       in.close();
>       out.close();
>     }

Of course nothing is shown on the browser, you're not writing any data
to it. Try replacing the "FileOutputStream out...." with
"OutputStream out = res.getOutputStream()".

- Frode



More information about the jcifs mailing list