package org.wall.servlet;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;
import java.util.List;

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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.wall.jdbc.SQLiteJDBC;
import org.wall.util.UUIDUtils;

public class FileUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,
			IOException {
		request.setCharacterEncoding("utf-8");
		// 1. 获取磁盘文件的条目的工厂
		DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();

		// 2.获取上传文件要存放的的路径文件夹
		String fileRepoDir = request.getServletContext().getRealPath("/pic");
		System.out.println(fileRepoDir);

		// 设置factory的一些属性
		diskFileItemFactory.setRepository(new File(fileRepoDir));

		// 设置缓存的大小,当超过缓存大小的时候,就会直接放到暂存空间
		diskFileItemFactory.setSizeThreshold(1024 * 1024);

		// 文件上传处理器
		ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
		try {
			// 获取所有的上传的文件,,可以实现多文件上传
			List<FileItem> fileItems = fileUpload.parseRequest(request);

			for (FileItem fileItem : fileItems) {
				if (!fileItem.isFormField()) {
					// 1.获取文件路径名
					String fileName = fileItem.getName();
					// 2.写文件
					fileItem.write(new File(fileRepoDir, fileName));
				}
			}
			this.savePic(fileItems);
		} catch (FileUploadException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	// 不能试用与多图上传
	public void savePic(List<FileItem> fileItems) throws SQLException, UnsupportedEncodingException {
		String val = "";
		String key = "";
		String fileName = "";
		for (FileItem f : fileItems) {
			if (f.isFormField()) {
				String value = new String(f.getString().getBytes("ISO-8859-1"), "UTF-8");
				val += "'" + value + "',";
				key += f.getFieldName() + ",";
			} else {
				fileName = f.getName();
			}
		}

		String id = UUIDUtils.id();
		String sql = "insert into wall(id," + key + "name)values('" + id + "'," + val + "'" + fileName + "')";
		System.out.println(sql);
		SQLiteJDBC.saveOrUpdate(sql);
	}
}
最近下载更多
sunlea  LV20 2023年4月21日
syh12355  LV5 2019年12月10日
sinanjuzzzz  LV2 2019年1月20日
aoxuezhishen  LV1 2018年9月21日
一道念  LV10 2018年9月17日
最代码酒酒  LV20 2018年8月2日
ledougo  LV11 2018年6月19日
lscoco  LV1 2018年5月22日
yezizhu  LV1 2018年5月16日
wangzp  LV5 2018年3月5日
最近浏览更多
locklock  LV2 5月22日
好的好的  LV8 3月11日
sunlea  LV20 2023年4月20日
知南TGA  LV2 2023年3月11日
张好好  LV1 2022年10月26日
1833174181  LV1 2022年8月23日
chenhongjie  LV5 2022年7月15日
小新Coding  LV9 2022年3月4日
天险无涯  LV15 2021年3月25日
stefaineyu  LV8 2021年3月8日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友