1、接收到的是图片的流时

//上传头像
@RequestMapping(value = "/uploadHeadSculpture", method = RequestMethod.POST)
@ResponseBody
public String uploadHeadSculpture(@RequestParam("photo") String file) {
User user = (User) SecurityUtils.getSubject().getSession().getAttribute("curr_user");
//获取文件格式
String postfix = file.split("/")[1].split(";")[0];
//获取图片的Base64码
String str = file.split(",")[1];
String url = "";
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解码
byte[] bytes = decoder.decodeBuffer(str);
for (int i = 0; i < bytes.length; ++i) {
// 调整异常数据
if (bytes[i] < 0) {
bytes[i] += 256;
}
}
long title = Calendar.getInstance().getTimeInMillis();
//获取系统路径并设定文件保存的目录
String dir = ServiceConfigUtil.getValue("imgpath");//图片的上传路径,我这里是从工程的配置文件获取的
String fileName = title + "." + postfix;
// 生成jpeg图片
FileUtils.writeByteArrayToFile(new File(dir, fileName), bytes);
String lookUserPhoto = ServiceConfigUtil.getValue("lookUserPhoto");//图片的访问路径,我这里是从工程配置文件获取的,可以自己定义。如果你的图片保存在工程目录下,可以直接用dir+fileName
url = lookUserPhoto + fileName;//保存到数据库的图片访问路径
/××
        ×保存url到数据库
       ××/
} catch (Exception e) {return "no";
}return "yes";
}

注:接收参数file值的一个基本格式

  "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAdiUlEQVR........."

2、接收到的是file文件直接上传

 @RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST)
public String saveOrUpdate(Person p, @RequestParam("photo") MultipartFile file, HttpServletRequest request) throws IOException{
if(!file.isEmpty()){
ServletContext sc = request.getSession().getServletContext();
String dir = sc.getRealPath(“/upload”); //设定文件保存的目录 String filename = file.getOriginalFilename(); //得到上传时的文件名
FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes()); p.setPhotoPath(“/upload/”+filename); //设置图片所在路径 System.out.println("upload over. "+ filename);
}
ps.saveOrUpdate(p);
return "redirect:/person/list.action"; //重定向
}

2.1、页面

<form action="/saveOrUpdate" enctype="multipart/form-data" method="post">
<input type="file" name="photo">
<input type="submit" value="commit">
</form>

2.2、需要在springmvc配置文件中添加

<!--上传文件-->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="10000000000000"/>
<property name="defaultEncoding" value="UTF-8"/>
</bean>

3、文件下载

private void downFile(String filename, String realPath, HttpServletResponse response) throws IOException {
try {
filename = new String(filename.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
log.warn("文件转码出现异常异常信息为:" + ExceptionUtil.print(e));
}
log.debug("下载的文件名:" + filename);
log.debug("下载的文件路径:" + realPath);
OutputStream os = null;
InputStream inputStream = null;
try {
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
response.setContentType("application/x-download");
response.setHeader("Content-Disposition", "attachment;fileName="
+ filename);
inputStream = new FileInputStream(realPath);
os = response.getOutputStream();
byte[] b = new byte[1024];
int length;
while ((length = inputStream.read(b)) != -1) {
os.write(b, 0, length);
}
os.flush();
} catch (IOException e) {
log.warn("下载文件出现异常,异常信息为:" + ExceptionUtil.print(e));
} finally {
inputStream.close();
os.close();
}
}

参考:springmvc文件上传

数据导出:java 导出excel到客户端(本地)例子 用poi和servlet实现的

springmvc之文件上传、下载的更多相关文章

  1. springMVC实现文件上传下载

    上传文件和下载文件是个常用的技能,在哪里开发几乎都能遇见,而所有的上传控件各不相同,插件很多,后台也有很多,这里我只尝试过这个方法觉的还够简洁.具体如下实现: 1.spring-mvc.xml配置   ...

  2. SSM框架-SpringMVC 实例文件上传下载

    一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+sta ...

  3. 14.SpringMVC之文件上传下载

    SpringMVC通过MultipartResolver(多部件解析器)对象实现对文件上传的支持. MultipartResolver是一个接口对象,需要通过它的实现类CommonsMultipart ...

  4. SpringMVC的文件上传下载,异常处理,拦截器的小总结

    文件的上传和下载 我们通常在访问网页时会使用到文件的上传与下载的功能,那么他是如何实现的呢? 1 下载: ResponseEntity :用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览 ...

  5. SpringMVC异步文件上传下载

    首先了解一下File的构造方法: File(String pathname):根据一个路径得到File对象 File(String parent,String child):根据一个目录和一个子文件/ ...

  6. SpringMVC文件上传下载(单文件、多文件)

    前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...

  7. SpringMVC文件上传下载

    在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...

  8. 使用springMVC实现文件上传和下载之环境配置与上传

    最近的项目中用到了文件的上传和下载功能,任务分配给了其他的同时完成.如今项目结束告一段落,我觉着这个功能比较重要,因此特意把它提取出来自己进行了尝试. 一. 基础配置: maven导包及配置pom.x ...

  9. SpringMVC 文件上传下载

    目录 文件上传 MultipartFile对象 文件下载 上传下载示例 pom.xml增加 创建uploadForm.jsp 创建uploadForm2.jsp 创建userInfo.jsp spri ...

  10. springmvc文件上传下载简单实现案例(ssm框架使用)

    springmvc文件上传下载实现起来非常简单,此springmvc上传下载案例适合已经搭建好的ssm框架(spring+springmvc+mybatis)使用,ssm框架项目的搭建我相信你们已经搭 ...

随机推荐

  1. ie8下input文字偏上select文字偏下

    1.ie8下input文字偏上 正常情况下input的显示情况如下 当设置input的高度时,就会出现文字不垂直居中偏上的情况,如图 解决方案 强input的行高line-height与其高度设置一致 ...

  2. 主成分分析(PCA)及其在R里的实现

    主成分分析(principal component analysis,PCA)是一种降维技术,把多个变量化为能够反映原始变量大部分信息的少数几个主成分.设X有p个变量,为n*p阶矩阵,即n个样本的p维 ...

  3. Makefile parameters pass 參數傳遞

    command $make ARCH=7777777777777777777777777777777 Makefile content $(warning $(ARCH)) output Makefi ...

  4. BZOJ 2460: [BeiJing2011]元素 贪心,线性基

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2460 解法:从大到小排序,依次贪心的添加到当前集合就可以了,需要动态维护线性基.用拟阵证明 ...

  5. Pretrained models for Pytorch (Work in progress)

    The goal of this repo is: to help to reproduce research papers results (transfer learning setups for ...

  6. android studio 64位手机+Fresco引起的在arm64位机器上找不到对应的so库

    我们的程序在32位机器上没有问题,有一天公司采购了一台魅族MX5 MTK的64位处理器上我们的应用报错了 "nativeLibraryDirectories=[/data/app/com.l ...

  7. CentOS 7下安装php-redis扩展及简单使用

    前言: 在本篇文章中,我将给大家介绍如何在CentOS7上安装PHP-Redis扩展以及一些简单的实用,关于如何在Centos上安装redis的,可以参考 Redis在CentOS 7上的安装部署   ...

  8. linux命令(29):cd命令

    例1:进入系统根目录 cd  / cd ../.. // [直接退到当前根目录] 例2:使用 cd 命令进入当前用户主目录 cd 例3:跳转到指定目录 cd  /home/test 例4:返回进入此目 ...

  9. DevExpress控件-GridControl根据条件改变单元格(Dev GridControl 单元格着色)

    DevExpress控件-GridControl根据条件改变单元格颜色,如下图: 解决办法:可以参考:http://www.cnblogs.com/zeroone/p/4311191.html 第一步 ...

  10. Oracle数据库共享内存分配不足问题的解决

    问题: ORA-: unable to allocate bytes of shared memory ("shared pool,)","session param v ...