public void insertfilname(Experiment exp) {
SqlSession session = getSqlSession();
Connection conn = session.getConnection();
PreparedStatement pstmt = null;
FileInputStream fis = null;
try {
fis = new FileInputStream(exp.getUpfile());
String strSQL = "INSERT INTO accessory(accessoryid,autherid,accessoryname,actualname,filetype,commentid,upfile) VALUES(?,?,?,?,?,?,?)";
pstmt = conn.prepareStatement(strSQL);
pstmt.setLong(1, exp.getAccessoryid());
pstmt.setLong(2, exp.getAutherid());
pstmt.setString(3, exp.getAccessoryname());
pstmt.setString(4, exp.getActualname());
pstmt.setString(5, exp.getFiletype());
pstmt.setString(6, exp.getCommentid());
pstmt.setBinaryStream(7, fis, fis.available());
pstmt.executeUpdate();
conn.commit();
} catch (SQLException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
fis.close();
pstmt.close();
conn.close();
session.close();
} catch (Exception ex) {
}
}
UpFile.delete(exp.getUpfile());
}
/**
* 读取数据库二进制文件
* 方法说明:此方法从数据库中读取二进制文件的输入流,然后写在‘SWFUpLoadAction.UPFILEPATH’文件夹下,并返回写入的路径
*/
public String downFile(String id){
String path = "";
SqlSession session = getSqlSession();
Connection connection = session.getConnection();
PreparedStatement statement=null;
ResultSet resultSet=null;
try {
String sqlString="select * from accessory where accessoryid="+id;
statement=connection.prepareStatement(sqlString);
resultSet = statement.executeQuery();
byte[] Buffer = new byte[1024];
if(resultSet.next()){
String accessoryname = resultSet.getString("accessoryname");
path = SWFUpLoadAction.UPFILEPATH+accessoryname;
File file=new File(path);
if(!file.exists()){
//mkdirs
try {
file.createNewFile();
} catch (Exception e) {
//e.printStackTrace();
//如果文件创建异常,则说明“upload”文件夹被删除了。
//创建'upload'文件夹
new File(path.substring(0, path.lastIndexOf("/"))).mkdirs();
file.createNewFile();//创建要下载的文件
}
}
FileOutputStream outputStream = new FileOutputStream(file);
InputStream iStream = resultSet.getBinaryStream("upfile");
if (iStream==null) {
outputStream.close();
UpFile.delete(file.getPath());
return null;
}
int size=0;
while((size=iStream.read(Buffer))!=-1){
outputStream.write(Buffer,0,size);
}
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
statement.close();
connection.close();
session.close();
} catch (Exception ex) {
}
}
System.out.println(path);
return path;
}