fileinput bootstrap的前后台文件上传实现

7 篇文章 0 订阅
2 篇文章 0 订阅

由于可以上传多个文件,所以在后台获取时需要解析多个文件

一、前台页面文件上传

github开源示例

二、后台java源代码

package com.kp.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 org.json.JSONObject;

import com.wb.util.SysUtil;

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

	@Override
	public void service(HttpServletRequest request, HttpServletResponse response) {
		try {
			PrintWriter writer = response.getWriter();
			writer.append("");
			writer.flush();
			writer.close();
		} catch (IOException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		
		
		
		
		// 获取文件需要上传到的路径
//		String path = "D:/temp/";
		String path = request.getSession().getServletContext().getRealPath("/");
		path += "uploads/";
		File dir = new File(path);
		if (!dir.exists()) {
			dir.mkdir();
		}
		try {
			request.setCharacterEncoding("utf-8");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}

		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setRepository(dir);
		factory.setSizeThreshold(1024 * 1024 * 1);// 1MB空间
		ServletFileUpload upload = new ServletFileUpload(factory);
		try {
			List<FileItem> list = upload.parseRequest(request);
			Map<String, String> map = new HashMap<String, String>();
			FileItem fileContent = null;
			for (FileItem item : list) {
				if ("file".equals(item.getFieldName())) {
					fileContent = item;
				} else {
					map.put(item.getFieldName(), new String(item.get()));
				}
			}
			if(null == fileContent){
				
			}else{
				String fileName = (String) map.get("fileId");
				fileName = fileName.substring(fileName.lastIndexOf("."));
				SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
				String now = df.format(new Date());
				fileName = SysUtil.getId() + now + fileName;
//				fileName = "自动生成字符" + now + fileName;
				map.put("fileName", fileName);
				saveFile(fileContent, map, path);
				System.out.println(map.toString());
				
				//遍历map
				JSONObject responseJson =new JSONObject();
				responseJson.append("fileName", map.get("fileName"));
				
				PrintWriter writer = response.getWriter();
				writer.write(responseJson.toString());
				writer.flush();
				writer.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void saveFile(FileItem fileContent, Map<String, String> map, String path)
			throws IOException {
		String fileName = (String) map.get("fileName");
		File file = new File(path, fileName);
		file.createNewFile();
		FileOutputStream outputStream = new FileOutputStream(file);
		int size = -1;
		byte[] temp = new byte[1024];
		InputStream in = fileContent.getInputStream();
		while ((size = in.read(temp)) != -1) { // 每次读取1KB,直至读完
			outputStream.write(temp, 0, size);
		}
		outputStream.flush();
		outputStream.close();
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值