我要用JAVA存图片到数据库
有一个安卓的前台用一个图片选择器选择图片传到后台然后通过INSERT存到数据库,请问前台传过来的图片的数据格式是什么类型的。...
有一个安卓的前台用一个图片选择器选择图片传到后台然后通过INSERT存到数据库,请问前台传过来的图片的数据格式是什么类型的。
展开
4个回答
展开全部
Android保存到数据库一般用SQLite,图片要是直接保存到数据库里面去,SQLite是用一种叫BLOB(大二进制对象)的类型保存的,在Java中需要用InputStream(读取时)和OutputStream(写入时)进行处理。
还有一种存图片的方法:图片进数据库的不一定是图片本身,你可以只传图片的路径(绝对或相对路径),这样就只需要一个字符串字段了(string, varchar之类的),需要时查到数据库里的路径在连接到文件系统就找到了。
还有一种存图片的方法:图片进数据库的不一定是图片本身,你可以只传图片的路径(绝对或相对路径),这样就只需要一个字符串字段了(string, varchar之类的),需要时查到数据库里的路径在连接到文件系统就找到了。
更多追问追答
追问
用测试
从页面传递过来的数据我用
request.getParameter()
获取的时候为何只有文件的名字
而不是整体的路径
追答
这种控件,不能用request.getParameter()取的,你用没用Struts 2文件上传?你的表单这个属性设了没,如果都搞定的话后台是放在一个Java的File对象里的,把它保存在磁盘上,路径你自己定。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二进制流数据,跟存文件一个道理
更多追问追答
追问
没用过二进制流数据,能给我举个例子么
追答
public int insertbinary(String pname,String src1){
Connection con = null;
String sql = "insert into test values(?,?)";
String sql1 ="update test set image=? where pname=?";
int res = 0;
try {
con=BaseDAO.getConnection();
con.setAutoCommit(false);
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1, pname);
pstm.setBlob(2, oracle.sql.BLOB.empty_lob());
pstm.executeUpdate();
pstm.close();
pstm = con.prepareStatement("select * from test where pname=?");
pstm.setString(1, pname);
ResultSet rs = pstm.executeQuery();
rs.next();
BLOB blob = (BLOB) rs.getBlob(2);
OutputStream os = blob.getBinaryOutputStream();
FileInputStream fi = new FileInputStream(src1);
byte[] buff = new byte[1024];
int len = fi.read(buff);
while (len != -1) {
os.write(buff);
len = fi.read(buff);
}
pstm = con.prepareStatement(sql1);
pstm.setBlob(1, blob);
pstm.setString(2, pname);
res = pstm.executeUpdate();
con.commit();
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不建议将图片转为二进制存入数据库
实际应用中 数据库都是保存图片地址
实际应用中 数据库都是保存图片地址
更多追问追答
追问
从页面上面提交过来的图片数据他的格式是是什么?比如我用
request.getParameter("图片name");这个时候我获得的参数是什么类型的?
追答
String
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二进制流二进制流
追问
能具体说一下么?
追答
流读取文件,然后流输出拷贝到服务器下的路径,你要得到的是服务器的路径,客户端的路径和你没关系
数据库保存的是服务器拷贝后的路径
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询