Java实现图片上传及数据库存储(java图片数据库)

随着互联网的发展,图片已经成为传递信息的重要手段之一。在很多网站上,用户需要上传图片来展示自己的信息或者分享一些内容。而如何实现图片的上传和存储则是一个非常关键的问题。本文将介绍如何使用Java语言实现图片上传并存储到数据库中。

创新互联建站于2013年创立,是专业互联网技术服务公司,拥有项目成都网站建设、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元东光做网站,已为上家服务,为东光各地企业和个人服务,联系电话:028-86922220

一、准备工作

在实现图片上传和存储之前,我们需要准备好一些工具和环境。我们需要安装Java开发环境(JDK)和集成开发环境(IDE),本文使用的是JDK8和Eclipse。我们需要使用Tomcat作为Web服务器。我们需要使用MySQL数据库来存储上传的图片。

二、编写上传页面

我们需要编写一个上传页面,让用户可以选择要上传的图片。在这个页面中,需要使用HTML表单来实现文件上传的功能。下面是一个简单的HTML表单代码示例:

“`

上传图片

选择文件:

“`

在这个表单中,我们使用了enctype=”multipart/form-data”来指定上传的文件类型,并使用了input type=”file”来创建文件选择框。表单的action属性指向我们即将编写的Servlet。

三、编写Servlet

在前面的步骤中,我们已经创建了一个上传页面,现在我们需要编写一个Servlet来处理由该页面提交的文件。Servlet是Java Web开发中的基本组成部分,它可以接收客户端请求并返回响应结果。

创建一个名为UploadServlet的Java类,并继承HttpServlet。然后,我们需要重写doPost方法,用于处理POST请求。下面是一个简单的示例代码:

“`

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.Part;

@WebServlet(“/uploadServlet”)

public class UploadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

// 上传文件存储目录

private static final String UPLOAD_DIRECTORY = “upload”;

// 数据库连接信息

private static final String JDBC_DRIVER = “com.mysql.jdbc.Driver”;

private static final String DB_URL = “jdbc:mysql://localhost:3306/test”;

private static final String DB_USER = “root”;

private static final String DB_PASSWORD = “”;

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType(“text/html;charset=UTF-8”);

// 获取上传的文件

Part filePart = request.getPart(“file”);

String fileName = getFileName(filePart);

// 连接数据库

Connection conn = null;

PreparedStatement stmt = null;

try {

Class.forName(JDBC_DRIVER);

conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

// 插入数据库

String sql = “INSERT INTO images (filename, filepath) values (?, ?)”;

stmt = conn.prepareStatement(sql);

stmt.setString(1, fileName);

stmt.setString(2, UPLOAD_DIRECTORY + File.separator + fileName);

stmt.executeUpdate();

// 保存文件到磁盘

String uploadPath = getServletContext().getRealPath(“”) + UPLOAD_DIRECTORY;

File uploadDir = new File(uploadPath);

if (!uploadDir.exists()) {

uploadDir.mkdir();

}

filePart.write(uploadPath + File.separator + fileName);

// 成功上传

PrintWriter out = response.getWriter();

out.println(“文件上传成功!”);

out.close();

} catch (ClassNotFoundException | SQLException ex) {

ex.printStackTrace();

response.sendRedirect(“error.html”); // 处理上传失败情况

} finally {

try {

if (stmt != null) {

stmt.close();

}

if (conn != null) {

conn.close();

}

} catch (SQLException ex) {

ex.printStackTrace();

}

}

}

private String getFileName(final Part part) {

final String partHeader = part.getHeader(“content-disposition”);

for (String content : partHeader.split(“;”)) {

if (content.trim().startsWith(“filename”)) {

return content.substring(content.indexOf(‘=’) + 1).trim().replace(“\””, “”);

}

}

return null;

}

}

“`

在Servlet中,我们首先获取上传的文件和文件名,然后连接MySQL数据库,将文件名和路径插入到数据库中。接着,我们将上传的文件保存到web应用根目录下的upload文件夹中。

四、创建数据库表

在我们的Java程序中,我们使用了MySQL数据库来存储上传的图片。因此,在使用程序之前,我们需要创建一个名为“images”的表来存储图片信息。

“`

CREATE TABLE images (

id int(11) NOT NULL AUTO_INCREMENT,

filename varchar(255) DEFAULT NULL,

filepath varchar(255) DEFAULT NULL,

PRIMARY KEY (id)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

“`

在这个表中,我们定义了三个列,分别是id、filename和filepath。其中,id列是自动递增的主键。

五、测试上传功能

现在,我们已经完成了Java实现图片上传和数据库存储的所有步骤。接下来,我们需要测试一下我们的程序是否可以正常工作。

我们需要将上传页面和Servlet部署到Tomcat服务器中。然后,我们启动Tomcat服务器,并在浏览器中访问上传页面。

选择一个图片文件并点击上传按钮,我们会看到一个成功上传的提示信息。同时,这个图片会被保存到我们的数据库和web应用根目录下的upload文件夹中。

六、

在本文中,我们介绍了如何使用Java语言实现图片上传并存储到数据库中。通过使用这个程序,我们可以轻松地实现图片上传和存储,并且可以方便地获取上传的图片信息。除此之外,我们还可以根据我们的需求修改这个程序,使其更加符合我们的实际情况。

成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!

Java web 问题图片怎么存储到数据库。

package shop.car.control;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.jsp.JspFactory;

import javax.servlet.jsp.PageContext;

import shop.car.model.GoodService;

import com.jspart.upload.SmartUpload;

import com.jspart.upload.SmartUploadException;

public class ImageInput extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

this.doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

PrintWriter out = response.getWriter();

PageContext pageContext = null;

JspFactory jsp = null;

// 实例化上载bean

SmartUpload mySmartUpload = new SmartUpload();

jsp = JspFactory.getDefaultFactory();

pageContext = jsp.getPageContext(this, request, response, “”铅亏谨, true,

8192, true);

// 初始化

 mySmartUpload.initialize(pageContext);

// 设置上载的更大值

mySmartUpload.setMaxFileSize(500 * 1024 * 1024);

// 设定允许上传的文件(通过扩展名限制)

mySmartUpload.setAllowedFilesList(“jpg”);

// 上载文件

try {

mySmartUpload.upload();

} catch (SmartUploadException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

int count = 0;

try {

count = mySmartUpload.save(“/upload”, SmartUpload.SAVE_VIRTUAL);

} catch (SmartUploadException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

out.println(count + “个文件上传成功!
“);

out.println(“空凳TEST=” + mySmartUpload.getRequest().getParameter(“TEST”)

+ “”);

// 循环取得所有上载的文件

for (int i = 0; i 

// 取得上载的文件

com.jspart.upload.File myFile = mySmartUpload.getFiles().getFile(

i);

if (!myFile.isMissing()) {

// 取得上载的文件的文件名

String myFileName = myFile.getFileName();

// 取得不带后缀的文件名

String suffix = myFileName.substring(0, myFileName

.lastIndexOf(‘.’));

// 取得后缀名

String ext = mySmartUpload.getFiles().getFile(0).getFileExt();

// 取得文件的大小

int fileSize = myFile.getSize();

// 保存路径

String aa = request.getRealPath(request.getServletPath())

+ myFileName;

String trace = aa + myFileName;

String s=new String(trace.getBytes(“ISO”),”utf-8″);

// 取得别的参数

String explain = (String) mySmartUpload.getRequest()

.getParameter(“text”);

String send = (String) mySmartUpload.getRequest().getParameter(

“send”);

// 将文件保存在服务器端

try {

myFile.saveAs(trace, SmartUpload.SAVE_PHYSICAL);

} catch (SmartUploadException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 下面的是将上载的文件保存到数据库中

// 将文件读到流中

java.io.File file = new java.io.File(s);

java.io.FileInputStream fis = new java.io.FileInputStream(file);

out.println(file.length());

GoodService.addGoods(fis, file);

out.println((“上载成功!!!”).toString());

} else {

out.println((“上载失败!!!”).toString());

}

}// 与前面的if对应

out.flush();

out.close();

}

}

一般数据库只存图片的路径。你可以在web下建一个目录(images),然后把上传的图片放在里面。更好是用档巧系统时间命名,避免冲突。

具体路径是通过request.getRealPath(“images”)得到,让后把图片改名放进去。

数据库记住相对的路径(1111.jpg)就可以了,在页面逗搏可以—-pic—

Java 保存图片到数据库时,为什么要对图片进行base64编码

保密和字符处理

首先这是一种码拦SB做扒模世法,图片保存到数据库这个很浪费数据库资源, 通常情况下图片等文件都是用ftp服务器来存储文件的春肢. 为什么要用base64进行编码是因为, base64会把文件这个文件转换成字符串, base64编码后得到的是一组字符串, 为什么要用blob类型, 因为这个类型可以存储4GB数据, 数据库中普通的 varchar varchar2 text等类型都有长度的限制

因为二进制数据无法使用弊塌镇格式化的传输(如xml、json),而Base64提供了剔除特殊字符(如

考虑一个接口可能会同时返回一个图片的数据,加上这个图片的说明,使用json返回的时候就必须要对图片信息进行Base64编码。否则,你只能返回一个url,然后让客户端再使用这个url获取图片信息。

上面只是讨论Base64的用处,至于存储在数据库是什么无所谓。本人还是倾向于原始的二进制数据,毕竟如果只有一个地方存储这些数据,那么保存原始数据能保证不会失去任何精度。

关于java 图片 数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器选创新互联,香港虚拟主机被称为香港虚拟空间/香港网站空间,或者简称香港主机/香港空间。香港虚拟主机特点是免备案空间开通就用, 创新互联香港主机精选cn2+bgp线路访问快、稳定!

文章题目:Java实现图片上传及数据库存储(java图片数据库)
网页URL:http://www.gawzjz.com/qtweb/news31/208981.html

成都网站建设公司_创新互联,为您提供企业建站营销型网站建设移动网站建设小程序开发服务器托管品牌网站制作

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联