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

发布于 2021-01-31 15:31:50

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

所以假设:

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

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

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-01-31
    为面试而生,有面试问题,就找面试哥。

    对于文件上传部分,您需要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的服务器内存。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看