如何上传图像并将其保存在数据库中?
我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为byte[]
。
所以假设:
public String name;
public String email;
public byte[] logo;
我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http
:
//imageshack.us/f/32/77675354.png/我需要转换该图像并将其保存为a,byte[]
然后转换为blob,以便将其插入到表中。
-
对于文件上传部分,您需要
enctype="multipart/form- data"
在HTML表单上进行设置,以便Web浏览器将发送文件内容,并且您希望request.getPart()
在servlet的doPost()
方法中使用来将文件获取为InputStream
。有关具体的代码示例,另请参见如何使用JSP
/ Servlet将文件上传到服务器?然后,保存此
InputStream
的DB,只需使用PreparedStatement#setBinaryStream()
上BLOB
/
varbinary
/bytea
列或任何列表示您最喜欢的数据库引擎“二进制数字”。preparedStatement = connection.prepareStatement("INSERT INTO user (name, email, logo) VALUES (?, ?, ?)"); preparedStatement.setString(1, name); preparedStatement.setString(2, email); preparedStatement.setBinaryStream(3, logo); // ...
您不一定需要将其转换
InputStream
为byte[]
,也不会提高内存效率。假设有100个用户同时上传10MB的图像,那么此时将分配1GB的服务器内存。