这个是将图片上传的数据库
package com.gmt.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import com.gmt.redis.UploadRedisManager;
/**
* 上传截图
* */
public class UploadImage extends HttpServlet {
private static final long serialVersionUID = 1L;
public static final String UPLOAD = "UPLOAD_IMAGE";
@SuppressWarnings("unchecked")
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
// 为解析类提供配置信息
DiskFileItemFactory factory = new DiskFileItemFactory();
// 创建解析类的实例
ServletFileUpload sfu = new ServletFileUpload(factory);
// 开始解析
sfu.setFileSizeMax(1024*400);
// 每个表单域中数据会封装到一个对应的FileItem对象上
try {
List<FileItem> items = sfu.parseRequest(request);
// 区分表单域
StringBuffer imageName = new StringBuffer(UPLOAD);
long id = 0;
long times = 0;
int goodId = 0;
for (int i = 0; i < items.size(); i++) {
FileItem item = items.get(i);
InputStream input = item.getInputStream();
byte imageArray[] = new byte[input.available()];
input.read(imageArray);
switch (i) {
case 0: //通过i获取第几个标签,并分出玩家id 图片id 上传时间 剩余的都是图片
//i的值的获取顺序就是在jsp页面标签从上到下的顺序,往下依次类推
//如果不按照顺序的话,可能会存在数据的类型错误
String roleId = new String(imageArray);
id = Long.parseLong(roleId);
System.out.println(roleId);
imageName.append(roleId);
continue;
case 1:
String goodsId = new String(imageArray);
goodId = Integer.parseInt(goodsId);
System.out.println(goodsId);
imageName.append(goodsId);
continue;
case 2:
String time = new String(imageArray);
System.out.println(time);
times = Long.parseLong(time);
imageName.append(time);
continue;
}
UploadRedisManager.addUploadImage(imageName.toString(), imageArray);
com.gmt.redis.UploadImage.updateShoopingState(id,times,goodId);
ServletContext application =this.getServletContext(); //this是这个页面
RequestDispatcher rd = application.getRequestDispatcher("/success");
rd.forward(request, response);
}
} catch (Exception e) {
ServletContext application =this.getServletContext(); //this是这个页面
RequestDispatcher rd = application.getRequestDispatcher("/fail");
rd.forward(request, response);
}
}
}
注:上面的方法是将jsp的图片通过流传到这个方法,然后根据jsp页面标签的顺序,依次获取图片的上传信息,然后再将图片转成数组通过数据库的连接方法中的添加数据的方法将图片放到数据库中
jsp页面获取图片的标签
<input type="file" id="imgUpload" name="imgUpload"/>