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. SSM(Spring+springMVC+MyBatis)框架-springMVC实现图片上传

    关于springMVC来实现图片上传的功能 话不多说,直接上码 1.applicationContext.xml <!-- 配置文件上传 --> <!--200*1024*1024即 ...

  2. springmvc的图片上传与导出显示

    1.前端文件上传需要在form表单内添加enctype="multipart/form-data" ,以二进制传递: 2.web.xml文件内配置 <servlet-mapp ...

  3. springmvc图片上传、json

    springmvc的图片上传 1.导入相应的pom依赖 <dependency> <groupId>commons-fileupload</groupId> < ...

  4. springmvc上传图片并显示图片--支持多图片上传

    实现上传图片功能在Springmvc中很好实现.现在我将会展现完整例子. 开始需要在pom.xml加入几个jar,分别是: <dependency> <groupId>comm ...

  5. Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能

    日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...

  6. SpringMVC框架五:图片上传与JSON交互

    在正式图片上传之前,先处理一个细节问题: 每一次发布项目,Tomcat都会重新解压war包,之前上传过的图片会丢失 为了解决这个问题:可以不在Tomcat下保存图片,而是另找一个目录. 上传图片: & ...

  7. SpringMVC 图片上传,检查图片大小

    使用SpringMVC+Spring 前端提交图片文件到Controller,检查上传图片大小是否符合要求 直接上代码了 1.校验图片大小 这里提供出验证的方法,用于在需要校验的地方调用 /** * ...

  8. SpringMVC+Spring+MyBatis 整合与图片上传简单示例

    一.思路: (一) Dao层: 1. SqlMapConfig.xml,空文件即可.需要文件头.2. applicationContext_dao.xml. a) 数据库连接池b) SqlSessio ...

  9. jsp+springmvc实现文件上传、图片上传和及时预览图片

    1.多文件上传:http://blog.csdn.net/a1314517love/article/details/24183273 2.单文件上传的简单示例:http://blog.csdn.net ...

随机推荐

  1. Altium Designer 15 --- Make LOGO/ICON

    Line frame is created by Rhino(DXF file format)

  2. 什么是jsonp

    Jsonp其实就是一个跨域解决方案. Js跨域请求数据是不可以的,但是js跨域请求js脚本是可以的. 所以可以把要请求的数据封装成一个js语句,做一个方法的调用. 跨域请求js脚本可以得到此脚本.得到 ...

  3. js014-表单脚本

    js014-表单脚本 本章内容: 理解表单 文本框验证与交互 使用其他表单控制 14.1 表单的基础知识 在HTML中,表单时由<form>元素来表示的,在JS中,表单对应的时HTMLFo ...

  4. 以sysdba身份登录oracle报ORA-1031权限不足错误之完美分析

    在linux 操作系统的数据库服务器上,使用”sqlplus / as sysdba” 登录Oracle 10.2 数据库实例时,登录失败,显示ORA-01031:  权限不足. 在数据库所在服务器上 ...

  5. java实现Haffman编码

    1.先创建一个树节点类(泛型类),为了方便使用集合的排序方法,泛型类要实现泛型接口Comparable,代码如下 package com.hjp.huffman; /** * Created by J ...

  6. Ankh不起作用的解决方法

    请检查Visual Studio 2008的Tool > Options... > Source Control,在下拉菜单中选择插件.

  7. Exercise16_22.java

    import javax.swing.*;import java.awt.*;import java.awt.event.*; public class Exercise16_22 extends J ...

  8. JAVA基础知识(转)

    本文就java基础部分容易混淆的一些知识点进行了一下总结.因为Java本身知识点非常多,不可能在很短的篇幅就能叙述完,而且就某一个点来讲,如欲仔细去探究,也能阐述的非常多.这里不做全面仔细的论述,仅做 ...

  9. sn 密钥注册

    ::打开开发人员命令提示符输入一下内容与证书密码sn -i CanChou.snk.pfx VS_KEY_4B89A33EE2B53C07

  10. Jedis 例子(demo)大全

    第一步:到git下载jedis源码,如果你用maven或者gradle,那么直接下官方的即可,地址:https://github.com/xetorthio/jedis:如果你用ant,下载这个:ht ...