小编典典

如何上传图像并将其保存在数据库中?

java

我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为byte[]

所以假设:

public String name;
public String email;
public byte[] logo;

我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http
:
//imageshack.us/f/32/77675354.png/我需要转换该图像并将其保存为a,byte[]然后转换为blob,以便将其插入到表中。


阅读 213

收藏
2020-09-11

共1个答案

小编典典

对于文件上传部分,您需要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);
// ...

您不一定需要将其转换InputStreambyte[],也不会提高内存效率。假设有100个用户同时上传10MB的图像,那么此时将分配1GB的服务器内存。

2020-09-11