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());
//拼接新的文件名 Exness
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
接着是处理页面add.jsp
${text }
${file1 }
${file2 }
${file3 }
${file4 }
${file5 }
${file6 }
上传成功!
来源:51CTO
作者:专注地一哥
链接:https://blog.51cto.com/14511863/2483320