1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
package tfi.fichier.ac;
import org.apache.struts.action.ActionForward;
import outilsStruts.config.CtiActionMapping;
import outilsStruts.fb.GenFbBase;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import outilsStruts.ac.*;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.*;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2001</p>
* <p>Company: CTI - EDM</p>
* @author unascribed
* @version 1.0
*/
public class TfiAcTelechargerFichier extends GenAcBase
{
public TfiAcTelechargerFichier()
{
}
public ActionForward execute(CtiActionMapping pMapping, GenFbBase pFormBean, HttpServletRequest parm3, HttpServletResponse pResponse) throws java.lang.Exception
{
/**@todo: implement this outilsStruts.ac.GenAcBase abstract method*/
String result= null;
String id = "1034";
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
BLOB blob = null;
String selectforupdate = "SELECT FAO_X_BLOBDOC, FIC_C_NOM, FIC_C_CONTENTTYPE from FAO_T_FICHIER WHERE FIC_N_ID = ? ";
try
{
DriverManager.registerDriver(new OracleDriver());
con = DriverManager.getConnection("jdbc:oracle:thin:@xxxxxx:yyyy:zzz", "asdfasdf", "asdfasdf");
pstmt = con.prepareStatement(selectforupdate);
pstmt.setString(1,id);
rs = pstmt.executeQuery();
if(rs.next())
{
blob = ((OracleResultSet)rs).getBLOB(1);
String fileName = rs.getString(2);
String contentType = rs.getString(3);
fileName = new File( fileName ).getName();
if ( blob != null )
{
if ( contentType != null )
pResponse.setContentType( contentType );
// Content-Disposition est utile pour présenter à l'utilisateur la fenêtre du browser permettant la sauvegarde du fichier
pResponse.setHeader("Content-Disposition", "attachment; filename=" + "\"" + fileName + "\"");
//pResponse.setHeader("Refresh", "5;");
InputStream is = blob.getBinaryStream();
OutputStream os = null;
//PrintWriter os = null;
try
{
os = pResponse.getOutputStream();
//os = pResponse.getWriter();
}
catch (IOException ioe0)
{
ioe0.printStackTrace();
}
BufferedInputStream data = new BufferedInputStream( is );
byte[] buf = new byte[100 * 1024];
//char[] charbuf = new char[100 * 1024];
int len;
while ((len = data.read(buf, 0, buf.length)) != -1)
{
//os.write(buf, 0, len);
os.write(buf, 0, buf.length);
len = data.read(buf, 0, buf.length);
}
is.close();
os.close();
data.close();
}
else
{
}
}
else
{
int mar_1 =1;
}
}
catch(SQLException esql)
{
esql.printStackTrace();
}
finally
{
try
{
rs.close();
pstmt.close();
con.close();
}
catch(SQLException esql)
{
esql.printStackTrace();
}
}
pResponse.reset();
result = "forward";
return pMapping.findForward(result);
}
} |
Partager