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>
看看效果
输入
结果
看看文件夹里有没有图片
可以看到,图片名被跟改了,这是为了防止出现重名不能上传
教程到这就完了,希望有用