阅读背景:

springmvc多上件上传

来源:互联网 
package com.web.controller.api;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Iterator;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.base.exception.AppException;
import com.entity.bean.BaseBean;
import com.web.BaseController;

@Controller
public class UploadController extends BaseController {
	private static Logger logger = Logger.getLogger(UploadController.class);

	/**
	 * 文件上传
	 * 
	 * @return
	 */
	@SuppressWarnings({ "finally" })
	@ResponseBody
	@RequestMapping(value = "upload.do",method=RequestMethod.POST)
	public String upload(HttpServletRequest request) {
		BaseBean bean = new BaseBean();
		try {
			CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(
					request.getSession().getServletContext());
			if (!commonsMultipartResolver.isMultipart(request)) {
				throw new AppException("当前请求没有包含任何附件");
			}
			MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
			Iterator<String> it = multipartHttpServletRequest.getFileNames();
			String name = null;//接受附件的名字
			MultipartFile file = null;
			String dist = "e:/upload";//保存目录
			String fileName = null;//文件最终保存的名字
			String originalFilename = null;//文件的原始名字
			int files = 0;//统计文件个数
			while (it.hasNext()) {
				name = it.next();
				file = multipartHttpServletRequest.getFile(name);
				originalFilename = file.getOriginalFilename();
				if(originalFilename == null) {
					continue;
				}
				fileName = this.getUUIDFileName(originalFilename);
				if(fileName == null) {
					continue;
				}
				FileCopyUtils.copy(file.getInputStream(), new FileOutputStream(dist + File.separator + fileName));
				files++;
			}
			if(files == 0) {
				throw new AppException("当前请求没有包含任何附件");
			}
		} catch (AppException ex) {
			logger.error("文件上传出错:" + ex.getMessage(), ex);
			bean.setMessage(ex.getMessage());
			bean.setCode("0");
		} catch (Exception ex) {
			logger.error("文件上传出错", ex);
			bean.setMessage("未知错误");
			bean.setCode("-1");
		} finally {
			return JSON.toJSONString(bean, SerializerFeature.WriteMapNullValue,
					SerializerFeature.WriteNullStringAsEmpty);
		}
	}

	// 生成随机文件名
	private String getUUIDFileName(String originName) {
		int index = originName.lastIndexOf(".");
		if(index >0) {
			String fileName = UUID.randomUUID().toString().replaceAll("-", "");
			String suffix = originName.substring(index, originName.length());
			return fileName + suffix;
		}
		return null;
	}
}
package com.web.controller.api;

import java.io



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: