This week's book giveaway is in the JavaScript forum.
We're giving away four copies of JavaScript Promises Essentials and have Rami Sarieddine on-line!
See this thread for details.
The moose likes Servlets and the fly likes uploading image into oracle database through servlet Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of JavaScript Promises Essentials this week in the JavaScript forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "uploading image into oracle database through servlet" Watch "uploading image into oracle database through servlet" New topic
Author

uploading image into oracle database through servlet

michael dizon
Greenhorn

Joined: Jul 12, 2002
Posts: 4
I am trying to upload an image file into an oracle database but I do not know where to begin, and then I will need to get it out!! Can someone help me out?
Scott Duclos
Greenhorn

Joined: Jul 12, 2002
Posts: 3
Originally posted by michael dizon:
I am trying to upload an image file into an oracle database but I do not know where to begin, and then I will need to get it out!! Can someone help me out?

Michael,
Try this out.
Create a table for your images. The actual image will be stored in a blob type field.
--- Images --------------
image_id NUMBER( 14 )
image_name VARCHAR2( 50 )
image BLOB
-------------------------
--- Code to insert image ----------
In your upload servlet grab the image and the mime type for the
uploaded image.
I will assume that the image is stored in a byte array.

import oracle.sql.*;
import oracle.jdbc.driver.*;
....

byte[] image = getImage(); //However you're getting your image.
conn.setAutoCommit( false ); //Very Important!
CallableStatement cs = conn.prepareCall (
"BEGIN " +
" insert into images ( image_id, image_name, image, " +
" ) values ( ?, ?, empty_blob() ) " +
" returning image into ?; " +
"END;"
);
cs.setInt( 1, 1 );
cs.setString( 2, "test image" );
cs.registerOutParameter( 3, OracleTypes.BLOB );
cs.executeUpdate();
BLOB blob = ((OracleCallableStatement)cs).getBLOB( 3 );
//Write the image to the blob
PrintWriter out = new PrintWriter( blob.getBinaryOutputStream() );
ByteArrayInputStream in = new ByteArrayInputStream( image );
//get the chunk size to read
int chunk = blob.getChunkSize();
char[] buffer = new char[chunk];
int len = -1;
while( (len = in.read( buffer ) ) != -1 ) {
out.write( buffer, 0, len );
}
out.close();
conn.commit();
--- Code to retrieve your image ---------
BLOB blob = null;
PreparedStatement ps = conn.prepareStatement( "select image from " +
" images where image_id = ? " );
ps.setInt( 1, 1 );
ResultSet rs = ps.executeQuery();
if( rs.next() ) {
blob = ((OracleResultSet)rs).getBLOB( 1 );
}
/*
* Whatever your mime type for the image is. Its
* probably a good idea to insert this with the image
* in the upload servlet.
*/
response.setContentType( mime_type );

int len = -1;
int chunk = blob.getChunkSize();
byte[] buffer = new byte[chunk];
InputStream is = blob.getBinaryStream();
OutputStream os = response.getOutputStream();

while( ( len = is.read( buffer ) ) != -1 )
os.write( buffer, 0, length );
os.flush();
os.close();

I would also check out the Intermedia api from Oracle. It has a few classes for inserting
images, audio and for uploading images.
http://otn.oracle.com/software/products/intermedia/htdocs/descriptions/servlets_jsp.html
I hope this helps. If something isn't clear here, feel free to email me at sduclos@nycap.rr.com.
Scott Duclos
michael dizon
Greenhorn

Joined: Jul 12, 2002
Posts: 4
Wow, very nice. What about MySQL?
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: uploading image into oracle database through servlet