我编程好了。从ftp服务器上传到mysql的所有文件。但我从mysql服务器下载文件并尝试打开它,文件损坏的异常发生。 我从ftp服务器读取文件并保存为byte []数组。并保存。一切正常。但是从mysql服务器下载后没有打开。我再次编程了一个这样的例子。它保存到本地驱动器。再次发生同样的错误。 请求,是否有任何例子"从ftp读取文件并保存为字节数组然后将字节数组保存为文件(存在)。"
答案 0 :(得分:0)
这是我的java代码
public boolean exec_blob(String sqlcmd,List<ArrayList> lst) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(set.getSqlConnStr(),set.getDbUser(),set.getDbPassword());
PreparedStatement statement = conn.prepareStatement(sqlcmd);
for(int i=0;i<lst.size();i++){
if(lst.get(i).get(0).toString().equals("String")){
statement.setString(i+1, lst.get(i).get(1).toString());
}
else if(lst.get(i).get(0).toString().equals("Integer")){
statement.setInt(i+1, Integer.parseInt(lst.get(i).get(1).toString()));
}
else if(lst.get(i).get(0).toString().equals("FileInputStream")){
byte[] data=(byte[])lst.get(i).get(1);
ByteArrayInputStream bais = new ByteArrayInputStream(data);
File fl=new File("c:\\0\\1.pdf");
FileOutputStream fos=new FileOutputStream(fl);
fos.write(data);
fos.close();
statement.setBinaryStream(i+1,bais,8*data.length);
}
}
int row = statement.executeUpdate();
if (row > 0) {
System.out.println("####\tfile uploaded to DB.................");
}
statement.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
System.out.println("SQL ERROR:"+ex.toString());
return false;
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("SQL ERROR:"+ex.toString());
return false;
}
return true;
}
1.pdf未开启