Corrigido o erro de download...

git-svn-id: https://svn.coded.pt/svn/SIPRP@2015 bb69d46d-e84e-40c8-a05a-06db0d633741
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
Carlos Roque 11 years ago
parent 86683bb107
commit 5bab64b9b8

@ -2,16 +2,20 @@ package com.evolute.siprp.pagina;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.MessageFormat;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.evolute.utils.arrays.ResultSet2DArray;
import com.evolute.utils.error.ErrorLogger;
import com.evolute.utils.strings.UnicodeChecker;
public class doGetFicheiro extends siprpServlet public class doGetFicheiro extends siprpServlet
{ {
@ -19,22 +23,43 @@ public class doGetFicheiro extends siprpServlet
public doGetFicheiro(HttpServletRequest req, HttpServletResponse res, String query) throws IOException, SQLException, ClassNotFoundException public doGetFicheiro(HttpServletRequest req, HttpServletResponse res, String query) throws IOException, SQLException, ClassNotFoundException
{ {
Class.forName( bdDriver ); ServletOutputStream os = res.getOutputStream();
Connection con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword ); try
res.addHeader( "Content-disposition", "attachment;filename=\"" + query + "\"" );
res.setContentType("application/octet-stream");
OutputStream os = res.getOutputStream();
PreparedStatement ps = con.prepareStatement("SELECT file_data FROM fil_file where name='" + query + "'");
ResultSet rs = ps.executeQuery();
if(rs != null)
{ {
while(rs.next()) ResultSet2DArray rs = getDatabaseData(query);
if(rs != null)
{
for( int i = 0; i <= rs.columnLength(); i++ )
{
res.addHeader( "Content-disposition", "attachment;filename=\"" + UnicodeChecker.parseFromUnicode( (String) rs.get(i, 2) ) + "\"" );
byte[] b = rs.get(i, 0);
res.setHeader( "Content-Length", String.valueOf( b.length ) );
res.setContentType((String) rs.get(i, 1));
os.write(b);
}
}
else
{ {
byte[] b = rs.getBytes(1); os.println( mergeTemplate( msgGenericError, errorTemplate ) );
os.write(b); }
} }
catch( Exception ex )
{
ErrorLogger.logException(ex);
os.println( mergeTemplate( "Erro ao obter o ficheiro.", errorTemplate ) );
} }
os.flush(); os.flush();
os.close(); os.close();
} }
private ResultSet2DArray getDatabaseData(String query) throws Exception
{
ResultSet2DArray rs;
Class.forName( bdDriver );
Connection con = DriverManager.getConnection( bdLocalUrl, bdLocalUsername, bdLocalPassword );
PreparedStatement ps = con.prepareStatement( MessageFormat.format("SELECT file_data, mime_type, name FROM fil_file where id=''{0}''", query) );
ErrorLogger.log( "sql = " + ps.toString( ) );
rs = new ResultSet2DArray( ps.executeQuery( ) );
return rs;
}
} }

@ -60,7 +60,7 @@ public class doGetListaFicheiros extends siprpServlet
for(int i = 0; i < rsFich.columnLength(); i++) for(int i = 0; i < rsFich.columnLength(); i++)
{ {
Integer ficheiroId = (Integer) rsFich.get(i, 0); Integer ficheiroId = (Integer) rsFich.get(i, 0);
dbQuery = "SELECT name, mime_type, inserted_stamp, details FROM fil_file WHERE id = '" + ficheiroId + "'"; dbQuery = "SELECT name, mime_type, inserted_stamp, details, id FROM fil_file WHERE id = '" + ficheiroId + "'";
stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY ); stmt = con.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY );
rs = new ResultSet2DArray( stmt.executeQuery(dbQuery) ); rs = new ResultSet2DArray( stmt.executeQuery(dbQuery) );
rs.getObjects(); rs.getObjects();
@ -70,11 +70,11 @@ public class doGetListaFicheiros extends siprpServlet
String query = null; String query = null;
if(geral) if(geral)
{ {
query = "/" + servletName + "/?" + empresaId + "/fich/" + rs.get(0, 0); query = "/" + servletName + "/?" + empresaId + "/fich/" + rs.get(0, 4);
} }
else else
{ {
query = "/" + servletName + "/?" + empresaId + "/" + estabelecimentoId + "/fich/" + rs.get(0, 0); query = "/" + servletName + "/?" + empresaId + "/" + estabelecimentoId + "/fich/" + rs.get(0, 4);
} }
SimpleDateFormat DDMMYYYY = new SimpleDateFormat( "dd-MM-yyyy" ); SimpleDateFormat DDMMYYYY = new SimpleDateFormat( "dd-MM-yyyy" );

Loading…
Cancel
Save