I have a method which start download of text file that is stored in oracle.
The column type is BLOB. I'm using this code below to init download, but I have no idea how set encode to this file when client downloaded it.
if (result.next()) {
String fileName0 = String.valueOf(result.getDate(columnData));
String fileName1 = String.valueOf(result.getInt(columnNumSolit));
String fileName2 = String.valueOf(result.getInt(columnNumComplto));
BLOB blob = ((OracleResultSet) result).getBLOB(columnFile);
InputStream inputStream = blob.getBinaryStream();
//int fileLength = inputStream.available();
int fileLength = blob.getChunkSize();
ServletContext context = getServlet().getServletContext();
// Set MIME to file.
String mimeType = context.getMimeType(fileName0+fileName1+fileName2+ext);
if (mimeType == null) {
mimeType = "application/octet-stream";
}
// header to response.
response.setContentType(mimeType);
response.setContentLength(fileLength);
String headerKey = "Content-Disposition";
String headerValue = String.format("attachment; filename=\"%s\"",fileName0+fileName1+fileName2+ext);
response.setHeader(headerKey, headerValue);
// write file to client.
OutputStream outStream = response.getOutputStream();
byte[] buffer = new byte[fileLength];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outStream.write(buffer, 0, bytesRead);
}
inputStream.close();
outStream.close();
tipoSolit = null;
}else {
//do something
}