jsp如何上传图片到数据库

jsp如何上传图片到数据库,第1张

jsp上传图片到数据,在数据库中有一种类型就是blob存储类型,就是用于储存二进制的。在java.sql里面的PreparedStatment有个setBlob()方法存入数据库,还有ResultSet里的getBlob()就是读取,详情你可以看JDBC Blob如何使用。

在jsp里上传图片很少用上述方式存储到数据库中,一般是将图片上传到服务器项目目录文件夹中,然后数据库中保存该图片文件的地址,如/item/upload/images/我上传的图片.jpg

servlet里面有一个request.getPart()方法,通过这个文件可以获得图片,前提是你的servlet版本必须是3.0以上+tomcat7,具体参考以下

@WebServlet("/articleManage")

@MultipartConfig(maxFileSize = 1024 * 1024 * 10)

// 最大10MB

public class ArticleManage extends HttpServlet {

private static final long serialVersionUID = 1L

public ArticleManage() {

super()

}

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

request.setCharacterEncoding("utf-8")

doPost(request, response)

}

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

String method = request.getParameter("method")

if (method != null) {

if (method.equals("add")) {

addArticle(request, response)

}

}

private void addArticle(HttpServletRequest request,

HttpServletResponse response) {

ArticleService service = new ArticleServiceImpl()

ArticleTypeService typeService=new ArticleTypeServiceImpl()

String content = null

String email = null

String tag = null

String type=null

try {

email = request.getParameter("email")

content = request.getParameter("content")

tag = request.getParameter("tag")

type=request.getParameter("type")

Part img = request.getPart("img")

String imgName = null

if (img != null) {

// 设置文件路径,写到硬盘

String head = img.getHeader("content-disposition")

int index = head.lastIndexOf("=") + 2

imgName = head.substring(index, head.length() - 1)// 上传文件时的文件名

imgName.lastIndexOf(".")

String suffix = imgName.substring(imgName.lastIndexOf("."))// 文件后缀

if (!suffix.equals(".jpeg") &&!suffix.equals(".jpg")

&&!suffix.equals(".png") &&!suffix.equals(".gif")

&&!suffix.equals(".bmp")) {

System.out.println("innn******************")

// 非法文件

request.setAttribute("content", content)

request.setAttribute("email", email)

request.setAttribute("tag", tag)

request.setAttribute("type", type)

request.setAttribute("errorinfo",

"*您上传的文件不合法,只能上后缀为jpg,bmp,png,gif,jpeg的图片")

request.getRequestDispatcher("add.jsp").forward(request,

response)// 重新导航到表单页

return

}

imgName = System.currentTimeMillis() + suffix

img.write(this.getServletContext().getRealPath("/image/upload")

+ File.separator + imgName)// 写到硬盘

}

Article msg = new Article()

msg.setContent(content)

msg.setImg("image/upload/" + imgName)

msg.setEmail(email)

msg.setKeyWord(tag)

msg.setType(typeService.querySingle(Integer.parseInt(type)))

// 从session中取User

User user = (User) request.getSession().getAttribute("user")

msg.setUser(user)

service.addMsg(msg)

response.setCharacterEncoding("utf-8")

response.setContentType("text/html")

response.getWriter()

.write("<html !DOCTYPE html><body><div style='marginautofont-weight:bold'><span style='font-size17px'>投稿成功</span>两秒后跳转到首页...</body></html>")

response.setHeader("refresh", "2url=index.jsp")

} catch (Exception e) {

e.printStackTrace()

request.setAttribute("content", content)

request.setAttribute("email", email)

request.setAttribute("tag", tag)

request.setAttribute("type", type)

request.setAttribute("errorinfo", "投稿失败,请检查上传文件的大小,不能大于10MB")

try {

request.getRequestDispatcher("add.jsp").forward(request,

response)

} catch (ServletException | IOException e1) {

e1.printStackTrace()

}

return

} finally {

try {

service.closeConnResources()

} catch (SQLException e) {

e.printStackTrace()

}

}

}

这是我前几天写的,有问题再问我


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10716595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存