jsp实现将图片与文字同时上传

jsp实现将图片与文字同时上传

首先,我们要准备两个上传所需要的包
commons-fileuoload-1.3.1.jar
commons-io-2.4.jar
记得把包导入项目

这是Java类
FileUpload.java

package fileupload;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUpload {
	public void doGet(HttpServletRequest request, HttpServletResponse response){
		DiskFileItemFactory factory = new DiskFileItemFactory();//建立一个新的文件上传句柄
        File dir = new File("E:/upload");//上传文件的存放位置
      factory.setRepository(dir);// 设置存放临时文件的目录
        ServletFileUpload upload = new ServletFileUpload(factory);// 用以上工厂实例化上传组件
        List list = null;
		try {
			list = upload.parseRequest(request);
		} catch (FileUploadException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}//从request得到所有上传域的列表
        Iterator iter = list.iterator();// 得到所有上传的文件
        while (iter.hasNext()) {//循环处理所得到的的文件信息
            FileItem item = (FileItem)iter.next();
            if(item.isFormField())
			{			
            	if ("text".equals(item.getFieldName())) {
				//获取表单文本域数据
				String text;
				try {
					
					text = item.getString("gb2312");
					request.setAttribute("text", text);
				} catch (UnsupportedEncodingException e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}

				}
			}
			//处理文件
			else
			{
			
           String filedname = item.getFieldName();
           String filename = item.getName();
           long size = item.getSize();
           if ((filename == null || filename.equals("")) && size == 0) {
				continue;
			}
              if (filedname.equals("file1")) {
              String name1 =  filename;
              //时间格式化格式
              SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
              //获取当前时间并作为时间戳
              String timeStamp=simpleDateFormat.format(new Date());
              //拼接新的文件名
              String file1 =timeStamp+name1;
                    	request.setAttribute("file1", file1);
                   // session.setAttribute("file1", file1)
                    try {
						item.write(new File(dir, file1));
					} catch (Exception e) {
						// TODO 自动生成的 catch 块
						e.printStackTrace();
					}
                    }
                if (filedname.equals("file2")) {
              String name2 =  filename;
              //时间格式化格式
              SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
              //获取当前时间并作为时间戳
              String timeStamp=simpleDateFormat.format(new Date());
              //拼接新的文件名
              String file2 =timeStamp+name2;
                   request.setAttribute("file2", file2);
                try {
					item.write(new File(dir, file2));
				} catch (Exception e) {
					// TODO 自动生成的 catch 块
					e.printStackTrace();
				}
             }
                if (filedname.equals("file3")) {
                    String name3 =  filename;
                    //时间格式化格式
                    SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
                    //获取当前时间并作为时间戳
                    String timeStamp=simpleDateFormat.format(new Date());
                    //拼接新的文件名
                    String file3 =timeStamp+name3;
                          	request.setAttribute("file3", file3);
                          try {
      						item.write(new File(dir, file3));
      					} catch (Exception e) {
      						// TODO 自动生成的 catch 块
      						e.printStackTrace();
      					}
                      }
                      if (filedname.equals("file4")) {
                          String name4 =  filename;
                          //时间格式化格式
                          SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
                          //获取当前时间并作为时间戳
                          String timeStamp=simpleDateFormat.format(new Date());
                          //拼接新的文件名
                          String file4 =timeStamp+name4;
                         request.setAttribute("file4", file4);
                      try {
      					item.write(new File(dir, file4));
      				} catch (Exception e) {
      					// TODO 自动生成的 catch 块
      					e.printStackTrace();
      				}
                   }
                      if (filedname.equals("file5")) {
                          String name5 =  filename;
                          //时间格式化格式
                          SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
                          //获取当前时间并作为时间戳
                          String timeStamp=simpleDateFormat.format(new Date());
                          //拼接新的文件名
                          String file5 =timeStamp+name5;
                                	request.setAttribute("file5", file5);
                                try {
            						item.write(new File(dir, file5));
            					} catch (Exception e) {
            						// TODO 自动生成的 catch 块
            						e.printStackTrace();
            					}
                            }
                            if (filedname.equals("file6")) {
                                String name6 =  filename;
                                //时间格式化格式
                                SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyyMMddHHmmssSSS");
                                //获取当前时间并作为时间戳
                                String timeStamp=simpleDateFormat.format(new Date());
                                //拼接新的文件名
                                String file6 =timeStamp+name6;
                               request.setAttribute("file6", file6);
                            try {
            					item.write(new File(dir, file6));
            				} catch (Exception e) {
            					// TODO 自动生成的 catch 块
            					e.printStackTrace();
            				}
                         }
        }}
    
	}

}

然后是上传页面
form里method是post
一定要加上enctype=“multipart/form-data”

index.jsp

<%@ page language="java" contentType="text/html; charset=GB2312"
	pageEncoding="GB2312"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<center>
<form action="add.jsp" method="post" enctype="multipart/form-data">
<input type="text" name="text" /><br>
<input type="file" name="file1" /><br>
<input type="file" name="file2" /><br>
<input type="file" name="file3" /><br>
<input type="file" name="file4" /><br>
<input type="file" name="file5" /><br>
<input type="file" name="file6" /><br>
<input type="submit" name="submit"/><br>
</center>
</body>
</html>

接着是处理页面add.jsp

<%@ page language="java" import="java.util.*,fileupload.FileUpload" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'add.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <%
    FileUpload fileupload = new FileUpload();
    fileupload.doGet(request, response);
     %>
    <center>
    ${text }<br>
     ${file1 }<br>
       ${file2 }<br>
        ${file3 }<br>
         ${file4 }<br>
          ${file5 }<br>
           ${file6 }<br>
              上传成功!<br>
     </center>
  </body>
</html>

看看效果
输入
在这里插入图片描述
结果
在这里插入图片描述
看看文件夹里有没有图片
在这里插入图片描述
可以看到,图片名被跟改了,这是为了防止出现重名不能上传
教程到这就完了,希望有用

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现JSP 页面中上传文字图片,需要涉及到以下几个步骤: 1. 编写 JSP 页面,设置表单,包含文字图片上传控件。 2. 在 JSP 页面中,使用 JavaBean 技术获取表单提交的数据,包括文字图片。 3. 将获取到的数据插入到 SQL Server 数据库中,包括文字图片。 下面是一个简单的实现示例: 1. 编写 JSP 页面 ```jsp <form action="upload.jsp" method="post" enctype="multipart/form-data"> <label for="title">标题:</label> <input type="text" id="title" name="title"><br> <label for="content">内容:</label> <textarea id="content" name="content"></textarea><br> <label for="image">图片:</label> <input type="file" id="image" name="image"><br> <input type="submit" value="提交"> </form> ``` 2. 编写 JavaBean ```java public class UploadBean { private String title; private String content; private String imagePath; public UploadBean(HttpServletRequest request) throws IOException, ServletException { title = request.getParameter("title"); content = request.getParameter("content"); Part imagePart = request.getPart("image"); if (imagePart != null) { String imageName = getSubmittedFileName(imagePart); imagePath = "/uploads/" + imageName; String realPath = request.getServletContext().getRealPath("/uploads"); File imageFile = new File(realPath, imageName); try (InputStream is = imagePart.getInputStream(); OutputStream os = new FileOutputStream(imageFile)) { byte[] buffer = new byte[1024]; int length; while ((length = is.read(buffer)) != -1) { os.write(buffer, 0, length); } } } } public void saveToDatabase() throws SQLException, ClassNotFoundException { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url = "jdbc:sqlserver://localhost:1433;databaseName=mydatabase"; String username = "myuser"; String password = "mypassword"; try (Connection conn = DriverManager.getConnection(url, username, password)) { String sql = "INSERT INTO mytable (title, content, image_path) VALUES (?, ?, ?)"; try (PreparedStatement stmt = conn.prepareStatement(sql)) { stmt.setString(1, title); stmt.setString(2, content); stmt.setString(3, imagePath); stmt.executeUpdate(); } } } private String getSubmittedFileName(Part part) { String header = part.getHeader("content-disposition"); if (header == null) { return null; } for (String token : header.split(";")) { if (token.trim().startsWith("filename")) { return token.substring(token.indexOf('=') + 1).trim().replace("\"", ""); } } return null; } } ``` 3. 编写 JSP 页面处理上传操作 ```jsp <%@ page import="java.io.*, java.sql.*" %> <%@ page import="javax.servlet.http.*, javax.servlet.*" %> <% try { UploadBean uploadBean = new UploadBean(request); uploadBean.saveToDatabase(); out.println("上传成功!"); } catch (Exception e) { out.println("上传失败:" + e.getMessage()); } %> ``` 在这个示例中,我们使用 JavaBean 技术获取表单提交的数据,并将图片保存到服务器上的指定目录中。然后,我们使用 SQL Server JDBC 驱动程序将数据插入到数据库中。最后,在 JSP 页面中展示上传结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值