[jcifs] Problem (and fix) accessing file contents using smb: url

Thierry Lach thierry.lach at gmail.com
Tue Nov 14 18:22:25 GMT 2006


I'm trying to access a files on a unix system through a Samba share from
java inside of a web application.  I want to keep the password configuration
separate from the url for security purposes.

I'm using jcifs.Config to set all of the properties, and can access the smb:
protocol properly.  But when I try to access the file contents (as in the
following example) I get an error indicating that the content type has not
been set..

    URL url = new URL("smb://hostname/sharename/filename.xml");
    URLConnection conn = url.openConnection();
    Object contents = conn.getContent();
    if (contents instanceof InputStream) {
        BufferedReader reader = new BufferedReader(new
InputStreamReader((InputStream) contents));
        String line;
        while ( null != (line = reader.readLine())) {
            pw.println(line);
        }
        ((InputStream)contents).close();
    }


I added the following code to SmbFile and now it works...

    /**
     * This URLConnection method returns a generic content type.
     *
     * @see java.net.URLConnection#getContentType()
     */
    public String getContentType() {
        String contentType = super.getContentType();
        if (contentType == null) {
            // Call it binary since we don't know any better
            contentType = "application/octet-stream";
        }
        return contentType;
    }

This can probably look at file extensions to better select a content type,
but this is a minimalist fix.
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the jcifs mailing list