代码:
1)上传
try {
Class.forName("com.mysql.jdbc.Driver").newInstance()
String url ="jdbc:mysql://localhost/test?user=root&password=root&useUnicode=true&characterEncoding=gbk"
Connection conn = DriverManager.getConnection(url)
Statement stmt = conn.createStatement()
stmt.execute("insert into test(myid) values (5)")
stmt.close()
PreparedStatement pstmt = null
String sql = ""
File file = new File("c:\\kick.jpg")
InputStream photoStream = new FileInputStream(file)
sql = " UPDATE test SET photo = ? WHERE myid = 5"
pstmt = conn.prepareStatement(sql)
pstmt.setBinaryStream(1, photoStream, (int)file.length())
pstmt.executeUpdate()
pstmt.close()
conn.close()
} catch (Exception e) {
e.printStackTrace()
}
2)下载:
PreparedStatement pst = ..... //省略获取Connection及查询的sql
ResultSet rs = pst.executeQuery()
InputStream is = rs.getBinaryStream(1)//1表示你的word字段在结果集中的索引号
FileOutputStream fos = new FileOutputStream("path")
byte [] buf = new byte[1024]
while(is.read(buf)!=-1){
fos.write(buf)
}
//close省略
大概思路,自己完善
对于msSQL,小格式文件可以转为二进制当成文本存储.但word一般都不小,所以一般情况下都直接保存文件,然后在数据库中保存地址.对文件的 *** 作由程序进行.
即使oracle这一类有大文件类型的,其实也是通过流来存储文件,常用于图像文件,很少于用office类型的.
方法有两个:1. 直接用php读取文件,然后以BLOB流的形式存入数据库,这种方法是不能查询文件内容的,只能把数据库当成一个容器来用。
2. 先将word文档转换成xml文档,word菜单里另存为xml就行,然后用php分析这个xml文件,把其中的内容存进数据库。好处word文档的内容可以通过数据库来查询,但是还原成原word文档不能保证100%的word格式无损失(word 2010之后的版本对这个问题有改进)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)