Oracle中实现图片上传的方法(oracle上传图片)
图片上传是目前在web应用里面最常用的一个功能,通常使用关系型数据库系统必须要经过一个上传的过程才能把图片存入数据库中,在使用Oracle数据库的时候,也可以实现图片的上传,下面就介绍同学们实现图片上传的方法:
1. 首先创建一个数据库表,用来存储图片,创建数据表语句为:
CREATE TABLE img(
id NUMBER(10),
img_name VARCHAR2(50),
img_data BLOB
);
2. 其次,使用 Java中的Commons FileUpload类库,它可以让我们在处理文件时免去繁琐的工作,文件上传的代码示例如下 :
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取request里的文件
FileItemFactory factory = new DiskFileItemFactory(); //为该请求创建一个DiskFileItemFactory对象
ServletFileUpload upload = new ServletFileUpload(factory); //创建一个新的文件上传
List items = upload.parseRequest(request); //解析请求
InputStream is = null;
String fileName = null;
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (!item.isFormField()) {
String fieldName = item.getFieldName(); //得到表单字段名
fileName = item.getName(); //得到文件名
is = item.getInputStream(); //得到输入流
}
}
}
3. 将文件流中的数据存入数据库,如果数据量较大,需要分多次执行,以免出现内存溢出,如下代码:
//存入数据库
try {
PreparedStatement pstmt =
conn.prepareStatement(“INSERT INTO img (id, img_name, img_data) VALUES (?, ?, ?)”);
pstmt.setInt(1, 1);
pstmt.setString(2, fileName);
// 设置二进制流,以免把数据读出来
if (is != null) {
pstmt.setBinaryStream(3, is, (int) fileName.length());
}
pstmt.executeUpdate();
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
以上就是Oracle数据库中实现图片上传的方法,针对不同的业务场景,可以根据实际情况进行相应的调整,使图片上传更加有效率。