package com.smbea.controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
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.CommonsMultipartFile; import com.smbea.po.Member;
import com.smbea.utils.CommonUtils;
import com.smbea.utils.Constants; /**
* 文件上传
* @author hapday
* 2015年5月21日 下午12:03:22
*/
@Controller
@Scope(value = "prototype")
@RequestMapping(value = "/demo")
public class FileUploadController {
private static final Logger logger = Logger.getLogger(FileUploadController.class); /**
* 多文件上传
* @param name
* @param commonsMultipartFiles
* @param request
* @return
*/
@RequestMapping(value = "/file/fileUpload1", method = RequestMethod.POST)
public @ResponseBody String fileUpload1(@RequestParam("name") String name,
@RequestParam("fileToUpload") CommonsMultipartFile [] commonsMultipartFiles, HttpServletRequest request) {
long startTime = System.currentTimeMillis();
logger.info("FileUploadController-fileUpload1-startTime=" + startTime); if(null == commonsMultipartFiles || 0 == commonsMultipartFiles.length){
return Constants.FAILURE;
} for(int index = 0, length = commonsMultipartFiles.length; index < length; index++){
CommonsMultipartFile commonsMultipartFile = commonsMultipartFiles[index]; if(null == commonsMultipartFile || commonsMultipartFile.isEmpty()){
continue;
} String originalFilename = commonsMultipartFile.getOriginalFilename();
String contentType = commonsMultipartFile.getContentType();
String fileName = commonsMultipartFile.getName();
long fileSize = commonsMultipartFile.getSize(); logger.info("name = " + name + ", originalFilename = " + originalFilename
+ ", contentType = " + contentType + ", fileName = " + fileName
+ ", fileSize = " + fileSize); // String extensionName = originalFilename.substring(originalFilename.indexOf(".")); // 扩展名
String newFileName = CommonUtils.UUIDGenerator() + "_" + originalFilename;
String destinationPath = request.getSession().getServletContext().getRealPath("/upload/" + newFileName); // 存放位置
logger.info("destinationPath = " + destinationPath);
File destFile = new File(destinationPath); try {
FileUtils.copyInputStreamToFile(commonsMultipartFile.getInputStream(), destFile);
} catch (IOException e) {
e.printStackTrace();
} Member member = new Member();
member.setName(name);
// member.setPhotoPath("/upload/" + newFileName);
} logger.info("FileUploadController-fileUpload1-耗时=" + (System.currentTimeMillis() - startTime));
return Constants.SUCCESS;
} @RequestMapping(value = "/file/fileUpload2", method = RequestMethod.POST)
public @ResponseBody String fileUpload2(@RequestParam("name") String name,
HttpServletRequest request) {
long startTime = System.currentTimeMillis();
logger.info("FileUploadController-fileUpload2-startTime=" + startTime); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile multipartFile = multipartRequest.getFile("fileToUpload");
// CommonsMultipartFile commonsMultipartFile = (CommonsMultipartFile) multipartRequest; if(null == multipartFile){
return Constants.FAILURE;
} String originalFilename = multipartFile.getOriginalFilename();
String contentType = multipartFile.getContentType();
String fileName = multipartFile.getName();
long fileSize = multipartFile.getSize(); logger.info("name = " + name + ", originalFilename = " + originalFilename
+ ", contentType = " + contentType + ", fileName = " + fileName
+ ", fileSize = " + fileSize); // String extensionName = originalFilename.substring(originalFilename.indexOf(".")); // 扩展名
String newFileName = CommonUtils.UUIDGenerator() + "_" + originalFilename;
String destinationPath = request.getSession().getServletContext().getRealPath("/upload/" + newFileName); // 存放位置
logger.info("destinationPath = " + destinationPath);
File destFile = new File(destinationPath); try {
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), destFile);
} catch (IOException e) {
e.printStackTrace();
} Member member = new Member();
member.setName(name);
// member.setPhotoPath("/upload/" + newFileName); logger.info("FileUploadController-fileUpload2-耗时=" + (System.currentTimeMillis() - startTime));
return Constants.SUCCESS;
} /**
* 文件上传
* @param name
* @param commonsMultipartFiles
* @param request
* @return
*/
@RequestMapping(value = "/file/fileUpload3", method = RequestMethod.POST)
public @ResponseBody String fileUpload3(@RequestParam("name") String name,
@RequestParam("fileToUpload") CommonsMultipartFile commonsMultipartFile, HttpServletRequest request) {
long startTime = System.currentTimeMillis();
logger.info("FileUploadController-fileUpload1-startTime=" + startTime); if(null == commonsMultipartFile){
return Constants.FAILURE;
} String originalFileName = commonsMultipartFile.getOriginalFilename();
String contentType = commonsMultipartFile.getContentType();
String fileName = commonsMultipartFile.getName();
long fileSize = commonsMultipartFile.getSize(); logger.info("name = " + name + ", originalFilename = " + originalFileName
+ ", contentType = " + contentType + ", fileName = " + fileName
+ ", fileSize = " + fileSize); // String extensionName = originalFilename.substring(originalFilename.indexOf(".")); // 扩展名
String newFileName = CommonUtils.UUIDGenerator() + "_" + originalFileName;
String destinationPath = request.getSession().getServletContext().getRealPath("/upload/" + newFileName); // 存放位置
logger.info("destinationPath = " + destinationPath);
File destFile = new File(destinationPath); try {
FileUtils.copyInputStreamToFile(commonsMultipartFile.getInputStream(), destFile);
} catch (IOException e) {
e.printStackTrace();
} Member member = new Member();
member.setName(name);
// member.setPhotoPath("/upload/" + newFileName); logger.info("FileUploadController-fileUpload3-耗时=" + (System.currentTimeMillis() - startTime));
return Constants.SUCCESS;
} @RequestMapping(value = "/file/fileUpload4", method = RequestMethod.POST)
public @ResponseBody String fileUpload4(@RequestParam("name") String name, @RequestParam("fileToUpload") CommonsMultipartFile commonsMultipartFile,
HttpServletRequest request) {
long startTime = System.currentTimeMillis();
logger.info("FileUploadController-fileUpload4-startTime=" + startTime); if(null == commonsMultipartFile){
return Constants.FAILURE;
} String originalFilename = commonsMultipartFile.getOriginalFilename();
String contentType = commonsMultipartFile.getContentType();
String fileName = commonsMultipartFile.getName();
long fileSize = commonsMultipartFile.getSize(); logger.info("name = " + name + ", originalFilename = " + originalFilename
+ ", contentType = " + contentType + ", fileName = " + fileName
+ ", fileSize = " + fileSize); // String extensionName = originalFilename.substring(originalFilename.indexOf(".")); // 扩展名
String newFileName = CommonUtils.UUIDGenerator() + "_" + originalFilename;
String destinationPath = request.getSession().getServletContext().getRealPath("/upload/" + newFileName); // 存放位置
logger.info("destinationPath = " + destinationPath);
File destFile = new File(destinationPath); try {
FileUtils.copyInputStreamToFile(commonsMultipartFile.getInputStream(), destFile);
} catch (IOException e) {
e.printStackTrace();
} Member member = new Member();
member.setName(name);
// member.setPhotoPath("/upload/" + newFileName); logger.info("FileUploadController-fileUpload4-耗时=" + (System.currentTimeMillis() - startTime));
return Constants.SUCCESS;
} /**
* 多文件上传
* @param name
* @param multipartRequest
* @param request
* @return
*/
@RequestMapping(value = "/file/fileUpload5", method = RequestMethod.POST)
public @ResponseBody String fileUpload5(@RequestParam("name") String name,
HttpServletRequest request) {
long startTime = System.currentTimeMillis();
logger.info("FileUploadController-fileUpload5-startTime=" + startTime); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; if(null == multipartRequest || !multipartRequest.getFileNames().hasNext()){
return Constants.FAILURE;
} for (Iterator<?> fileIterator = multipartRequest.getFileNames(); fileIterator.hasNext();) {
String key = (String) fileIterator.next();
MultipartFile multipartFile = multipartRequest.getFile(key); if(null == multipartFile || 0 == multipartFile.getSize()){
continue;
} String originalFilename = multipartFile.getOriginalFilename();
String contentType = multipartFile.getContentType();
String fileName = multipartFile.getName();
long fileSize = multipartFile.getSize(); logger.info("name = " + name + ", originalFilename = "
+ originalFilename + ", contentType = " + contentType
+ ", fileName = " + fileName + ", fileSize = " + fileSize); String newFileName = CommonUtils.UUIDGenerator() + "_"
+ originalFilename; String fileUploadPath = multipartRequest.getSession()
.getServletContext()
.getRealPath(Constants.FILE_UPLOAD_PATH); logger.info("fileUploadPath = " + fileUploadPath); try {
this.saveFileFromInputStream(multipartFile.getInputStream(),
fileUploadPath, newFileName);
} catch (Exception e) {
e.printStackTrace();
} Member member = new Member();
member.setName(name);
// member.setPhotoPath(Constants.FILE_UPLOAD_PATH + newFileName);
} logger.info("FileUploadController-fileUpload5-耗时=" + (System.currentTimeMillis() - startTime));
return Constants.SUCCESS;
} @RequestMapping(value = "/file/fileUpload6", method = RequestMethod.POST)
public @ResponseBody String fileUpload6(@RequestParam("name") String name, MultipartHttpServletRequest multipartRequest,
HttpServletRequest request) {
long startTime = System.currentTimeMillis();
logger.info("FileUploadController-fileUpload6-startTime=" + startTime); // MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// MultipartFile multipartFile = multipartRequest.getFile("fileToUpload");
// CommonsMultipartFile commonsMultipartFile = (CommonsMultipartFile) multipartRequest; if(null == multipartRequest || !multipartRequest.getFileNames().hasNext()){
return Constants.FAILURE;
} for (Iterator<?> fileIterator = multipartRequest.getFileNames(); fileIterator.hasNext();) {
String key = (String) fileIterator.next();
MultipartFile multipartFile = multipartRequest.getFile(key); if(null == multipartFile || 0 == multipartFile.getSize()){
continue;
} String originalFilename = multipartFile.getOriginalFilename();
String contentType = multipartFile.getContentType();
String fileName = multipartFile.getName();
long fileSize = multipartFile.getSize(); logger.info("name = " + name + ", originalFilename = "
+ originalFilename + ", contentType = " + contentType
+ ", fileName = " + fileName + ", fileSize = " + fileSize); String newFileName = CommonUtils.UUIDGenerator() + "_"
+ originalFilename; String fileUploadPath = multipartRequest.getSession()
.getServletContext()
.getRealPath(Constants.FILE_UPLOAD_PATH); logger.info("fileUploadPath = " + fileUploadPath); try {
this.saveFileFromInputStream(multipartFile.getInputStream(),
fileUploadPath, newFileName);
} catch (Exception e) {
e.printStackTrace();
} Member member = new Member();
member.setName(name);
// member.setPhotoPath(Constants.FILE_UPLOAD_PATH + newFileName);
} logger.info("FileUploadController-fileUpload6-耗时=" + (System.currentTimeMillis() - startTime));
return Constants.SUCCESS;
} /**
* 保存文件到制定目录
* @param inputStream
* @param fileUploadPath
* @param newFileName
* @throws IOException
*/
private void saveFileFromInputStream(InputStream inputStream, String fileUploadPath,
String newFileName) throws IOException {
File file = new File(fileUploadPath, newFileName); if(!file.exists()){
file.createNewFile();
} FileOutputStream fileOutputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024 * 1024];
int bytesum = 0;
int byteread = 0;
while ((byteread = inputStream.read(buffer)) != -1) {
bytesum += byteread;
fileOutputStream.write(buffer, 0, byteread);
fileOutputStream.flush();
}
fileOutputStream.close();
inputStream.close(); logger.info("*** bytesum = " + bytesum);
}
}

  

Spring文件上传Demo的更多相关文章

  1. spring文件上传

    Spring文件上传 1,导包: <dependency> <groupId>javax.servlet</groupId> <artifactId>s ...

  2. Spring 文件上传MultipartFile 执行流程分析

    在了解Spring 文件上传执行流程之前,我们必须知道两点: 1.Spring 文件上传是基于common-fileUpload 组件的,所以,文件上传必须引入此包 2.Spring 文件上传需要在X ...

  3. Spring文件上传出错:java.lang.ClassCastException: org.apache.catalina.connector.Request

    java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade cannot be cast to org.spri ...

  4. Spring文件上传配置

    增加依赖jar包 <dependency> <groupId>commons-fileupload</groupId> <artifactId>comm ...

  5. Spring 文件上传功能

    本篇文章,我们要来做一个Spring的文件上传功能: 1. 创建一个Maven的web工程,然后配置pom.xml文件,增加依赖: <dependency> <groupId> ...

  6. WebSite 文件上传Demo

    知识点: 1 <!--上传文件时:        1.必须使用Post方式来提交数据        2.必须设置表单的enctype属性        3.必须在表单中包含文件域.input t ...

  7. shutil模块和几种文件上传Demo

    一.shutil模块 1.介绍 shutil模块是对os中文件操作的补充.--移动 复制 打包 压缩 解压 2.基本使用 1. shutil.copyfileobj(文件1, 文件2, 长度) 将文件 ...

  8. (转)Spring文件上传,包括一次选中多个文件

    背景: http://www.cnblogs.com/lixuwu/p/8495275.html已经实现了单文件的上传和下载,多文件的上传是另一种情景,这里记录下来 实现过程 先说前台. 运行以后就是 ...

  9. 基于tornado的文件上传demo

    这里,web框架是tornado的4.0版本,文件上传组件,是用的bootstrap-fileinput. 这个小demo,是给合作伙伴提供的,模拟APP上摄像头拍照,上传给后台服务进行图像识别用,识 ...

随机推荐

  1. python web开发之flask框架学习(2) 加载模版

    上次学习了flask的helloword项目的创建,这次来学习flask项目的模版加载: 第一步:创建一个flask项目 第二步:在项目目录的templates文件夹下创建一个html文件 第三步: ...

  2. P4338 [ZJOI2018]历史 LCT+树形DP

    \(\color{#0066ff}{ 题目描述 }\) 这个世界有 n 个城市,这 n 个城市被恰好 \(n-1\) 条双向道路联通,即任意两个城市都可以 互相到达.同时城市 1 坐落在世界的中心,占 ...

  3. P3272 [SCOI2011]地板

    \(\color{#0066ff}{ 题目描述 }\) lxhgww的小名叫"小L",这是因为他总是很喜欢L型的东西.小L家的客厅是一个R*C的矩形,现在他想用L型的地板来铺满整个 ...

  4. City Game UVALive - 3029(悬线法求最大子矩阵)

    题意:多组数据(国外题好像都这样),每次n*m矩形,F表示空地,R表示障碍 求最大子矩阵(悬线法模板) 把每个格子向上延伸的空格看做一条悬线 以le[i][j],re[i][j],up[i][j]分别 ...

  5. Eclipse报错:Attribute "xmlns" was already specified for element "web-app".

    原因: 在Eclipse中修改了已有的Web工程的工程名,然后出现该错误. Attribute "xmlns" was already specified for element ...

  6. 架构师 AI 技术

    架构师是大忽悠吗?阿里技术大牛告诉你真相! - huangshulang1234的博客 - CSDN博客https://blog.csdn.net/huangshulang1234/article/d ...

  7. redis常用数据类型与命令

    注意:LPUSH 和LPOP按照栈进行操作,RPUSH和RPOP按照队列进行操作 zremrangebyscore key score开始  score结束//根据score删除 zremrangeb ...

  8. php设计模式总结2

    策略模式: 定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 封装:把行为用接口封装起来,我们可以把那些经常变化的部分,从当前的类中单独取出来,用接口进行单 ...

  9. Jenkins自动化CI CD流水线之2--用户权限管理

    一. 背景 针对开发.运维.测试针对不同角色进行不同权限划分, 基于插件: Role-based Authorization Strategy来实现. 一. 安装 安装该插件: 系统管理->管理 ...

  10. Dev GridView RowCellClick事件与MouseDown事件

    GridView处于可编辑状态,左键点击默认为“进入编辑”. 将GridView的OptionsColumn.AllowEdit设置为false后左键可触发RowCellClick.但有时候,既希望G ...