package com.haier.controller.newuser;

import com.haier.commons.entity.Response;
import com.haier.commons.utils.AliyunOSSUtil; import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import java.io.File;
import java.util.UUID;
/**
* 文件操作Controller.
*
* @author Will Tong
*
*/
@Controller
@RequestMapping("/file")
public class FileController {
private Logger log = Logger.getLogger(getClass());
private static long PICMAXSIZE = 2097152;
private static long FILEMAXSIZE= 10485760;//定义文件上传的最大大小为5M
@RequestMapping(value ="/uploadfile",produces="text/plain;charset=UTF-8")
@ResponseBody
public String uploadFile(HttpServletRequest request, @RequestParam(required = false) MultipartFile streamFile) {
Response<String> response=new Response<>();
String fileName = streamFile.getOriginalFilename();
if (!StringUtils.isEmpty(fileName)) {
try { if (streamFile.getSize() <= FILEMAXSIZE) {
// String reg = ".+(.JPEG|.jpeg|.JPG|.jpg|.GIF|.gif|.BMP|.bmp|.PNG|.png)$";
// Pattern pattern = Pattern.compile(reg);
// Matcher matcher = pattern.matcher(streamFile.getOriginalFilename().toLowerCase());
UUID uuid = UUID.randomUUID();
String resultFileName = uuid.toString() + "." + this.getExtensionName(fileName);
File file = new File(request.getSession().getServletContext().getRealPath("/") + "temp/", resultFileName);
FileUtils.copyInputStreamToFile(streamFile.getInputStream(), file);
String uri = AliyunOSSUtil.PutObject(AliyunOSSUtil.ClassificationEnum.MECV,AliyunOSSUtil.FolderEnum.ORDER , resultFileName, file);
// 上传后删除
file.delete();
String url = "http://" + AliyunOSSUtil.GetBucket() + "." + AliyunOSSUtil.GetDomain() + "/" + uri;
response.setResult(url);
} else {
response.setError("图片大小超过5M,请重新选择!");
} } catch (Exception e) {
log.error(String.format("图片上传失败失败"));
response.setError("图片上传失败失败!");
}
}else{
response.setError("图片名字为空无法上传!");
}
return response.toJson();
} public String getExtensionName(String filename) {
if ((filename != null) && (filename.length() > 0)) {
int dot = filename.lastIndexOf('.');
if ((dot >-1) && (dot < (filename.length() - 1))) {
return filename.substring(dot + 1);
}
}
return filename;
}
}

spring mvc文件上传的更多相关文章

  1. Spring MVC 笔记 —— Spring MVC 文件上传

    文件上传 配置MultipartResolver <bean id="multipartResolver" class="org.springframework.w ...

  2. Spring MVC文件上传教程 commons-io/commons-uploadfile

    Spring MVC文件上传教程 commons-io/commons-uploadfile 用到的依赖jar包: commons-fileupload 1.3.1 commons-io 2.4 基于 ...

  3. 【Java Web开发学习】Spring MVC文件上传

    [Java Web开发学习]Spring MVC文件上传 转载:https://www.cnblogs.com/yangchongxing/p/9290489.html 文件上传有两种实现方式,都比较 ...

  4. Spring mvc文件上传实现

    Spring mvc文件上传实现 jsp页面客户端表单编写 三个要素: 1.表单项type="file" 2.表单的提交方式:post 3.表单的enctype属性是多部分表单形式 ...

  5. Spring mvc 文件上传到文件夹(转载+心得)

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  6. spring mvc 文件上传 ajax 异步上传

    异常代码: 1.the request doesn't contain a multipart/form-data or multipart/mixed stream, content type he ...

  7. spring mvc文件上传(单个文件上传|多个文件上传)

    单个文件上传spring mvc 实现文件上传需要引入两个必须的jar包    1.所需jar包:                commons-fileupload-1.3.1.jar       ...

  8. Strut2 和Spring MVC 文件上传对比

    在Java领域中,有两个常用的文件上传项目:一个是Apache组织Jakarta的Common-FileUpload组件 (http://commons.apache.org/proper/commo ...

  9. Spring MVC 文件上传 & 文件下载

    索引: 开源Spring解决方案--lm.solution 参看代码 GitHub: pom.xml WebConfig.java index.jsp upload.jsp FileUploadCon ...

  10. 【Spring】Spring MVC文件上传--整合bootstrap-fileinput和jQuery-File-Upload

    前言 这里分享两个使用Spring MVC进行文件上传的简单示例, 分别整合bootstrap-fileinput 和 Jquery File Upload , 代码十分简单, 都是入门的示例,因此这 ...

随机推荐

  1. linux io stack

  2. Java提高篇——Java 异常处理

    异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用Syst ...

  3. Python之路-python(css、JavaScript)

    css JavaScript 一.CSS 分层: position: fixed;(固定到页面的具体位置) 例如:返回顶部 <!DOCTYPE html> <html lang=&q ...

  4. Java实现插入排序

    package Sort; import java.util.Arrays; public class InsertionSort { public static int[] sort(int[] l ...

  5. 如果空间不够的话,iOS发生这样的错误

    2016-12-16 10:24:50.945 gpxj[2634:21323] Simulator user has requested new graphics quality: 10 2016- ...

  6. 【搬运】systemctl 命令完全指南

    Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器. Systemd是一个系统管理守护进程.工具和库的集合,用于取代System V初始进程.Systemd的功能是 ...

  7. Lua学习笔记一

    学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章  开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...

  8. GPS部标监控平台的架构设计(七)-压力测试

    部标监控平台的压力测试是部标检测流程的最后一个检测环节,也是最难的,很多送检的企业平台都是卡壳在这一个环节.企业平台面临的问题如下: 1.对于压力测试的具体指标要求理解含糊,只知道是模拟一万辆车终端进 ...

  9. Django根据现有数据库建立model

    Django引入外部数据库还是比较方便的,步骤如下 创建一个项目,修改seting文件,在setting里面设置你要连接的数据库类型和连接名称,地址之类,和创建新项目的时候一致 运行下面代码可以自动生 ...

  10. 【小窍门】cmd控制台无法输入中文(日文),输出非英文字符都是问号解决办法,中文都是问号解决办法

    在网上复制了一段代码,里面含有中文,而自己电脑本身系统是英文 win8/win10, 在VS 里debug之后输出后,中文都是问号.并不是乱码什么的. 奇怪了. 打开cmd,输入日文的时候,显示IME ...