单文件上传:

pom.xml:

commons-io

commons-io

1.3.2

commons-fileupload

commons-fileupload

1.2.1

jstl

jstl

1.2

taglibs

standard

1.1.2

upload.jsp:

1.input的type设置为file。

2.form表单的method设置为post。(get请求只会将文件名传给后台)

3.form表单的enctype设置为multipart/form-data,以二进制的形式传输数据。

" method="post" enctype="multipart/form-data">

上传的图片

FileController.java:

@RequestMapping(value="upload", method = RequestMethod.POST)

public String upload(@RequestParam(value="img")MultipartFile img, HttpServletRequest request)

throws Exception {

//getSize()方法获取文件的大小来判断是否有上传文件

if (img.getSize() > 0) {

//获取保存上传文件的file文件夹绝对路径

String path = request.getSession().getServletContext().getRealPath("file");

//获取上传文件名

String fileName = img.getOriginalFilename();

File file = new File(path, fileName);

img.transferTo(file);

//保存上传之后的文件路径

request.setAttribute("filePath", "file/"+fileName);

System.out.println("file/"+fileName);

return "upload";

}

return "error";

}

springMVC.xml:

注意:这里需要在webapp文件下手动创建一个file文件夹。

多文件上传:

uploads.jsp:

file1:

file2:

file3:

上传的图片

FileController.java:

@RequestMapping(value="/uploads", method = RequestMethod.POST)

public String uploads(@RequestParam MultipartFile[] imgs, HttpServletRequest request)throws Exception {

//创建集合,保存上传后的文件路径

ListfilePaths = new ArrayList();

for (MultipartFile img : imgs) {

if (img.getSize() > 0) {

String path = request.getSession().getServletContext().getRealPath("file");

String fileName = img.getOriginalFilename();

File file = new File(path, fileName);

filePaths.add("file/"+fileName);

img.transferTo(file);

}

}

request.setAttribute("filePaths", filePaths);

return "uploads";

}

文件下载:

download.jsp:

Insert title here

下载图片

FileController.java:

@RequestMapping("/download")

public void downloadFile(String fileName,HttpServletRequest request,

HttpServletResponse response){

if(fileName!=null){

//获取file绝对路径

String realPath = request.getServletContext().getRealPath("file/");

File file = new File(realPath,fileName);

OutputStream out = null;

if(file.exists()){

//设置下载完毕不打开文件

response.setContentType("application/force-download");

//设置文件名

response.setHeader("Content-Disposition", "attachment;filename="+fileName);

try {

out = response.getOutputStream();

out.write(FileUtils.readFileToByteArray(file));

out.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

if(out != null){

try {

out.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

}

}

java jsp filename filepath 图片上传_SpringMVC实现文件上传与下载相关推荐

  1. 【转】jsp+servlet和SSM分别是如何实现文件上传(示例)

    原文地址:https://blog.csdn.net/niceliusir/article/details/78453560 以下是jsp+servlet和SSM分别是如何实现文件上传的方法示例 两种 ...

  2. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  3. SpringMVC 单文件上传与多文件上传

    一.简述 一个javaWeb项目中,文件上传功能几乎是必不可少的,本人在项目开发中也时常会遇到,以前也没怎么去理它,今天有空学习了一下这方面的知识,于是便将本人学到的SpringMVC中单文件与多文件 ...

  4. springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显

    springboot文件上传,单文件上传和多文件上传 项目结构及pom.xml 创建文件表单页面 编写javabean 编写controller映射 MultipartFile类 @RequestPa ...

  5. 原生input标签实现ajax单文件上传和多文件上传

    自己还是一个菜鸟的时候,有次项目经理让我用Java做一个多文件上传的功能.那时候技术学得很渣,最多只能够实现单文件上传.做了一个星期都没有做出来,于是项目经理不留半点情面,当着办公室所有人的面痛批我一 ...

  6. php 上传文件漏洞,【文件上传】PHP文件上传漏洞

    0x01 文件上传漏洞 文件上传漏洞顾名思义就是用户上传一个可执行的脚本文件,获得了执行服务器端命令的能力.通常,文件上传是getshell最常用.最直接的方式了.但是,文件上传本身是一个正常的业务需 ...

  7. ***使用PHP实现文件上传和多文件上传

    http://www.365mini.com/page/php-upload-file.htm 在PHP程序开发中,文件上传是一个使用非常普遍的功能,也是PHP程序员的必备技能之一.值得高兴的是,在P ...

  8. 前后端分离 -- 深入浅出 Spring Boot + Vue + ElementUI 实现相册管理系统【文件上传 分页 】 文件上传也不过如此~

    前后端分离 – 深入浅出系列 Spring Boot + Vue + ElementUI 实现相册管理系统[文件上传 分页 ] 文件上传也不过如此~ 引言 Hello,我是Bug终结者,一名热爱后端J ...

  9. vue-tinymce的使用,粘贴文件上传,自定义文件上传,改base64转换成上传到服务器返回url

    vue-tinymce的使用,粘贴文件上传,自定义文件上传,改base64转换成上传到服务器返回url vue中使用 <vue-tinymcev-model="itemForm.con ...

最新文章

  1. ACM第一名:基于轨迹感知多模态特征的视频关系检测
  2. Linux之sed:修改器按照字符和行数进行筛选和替换行值 选项[动作
  3. 【数据结构总结】第八章 排序
  4. JQuery属性、事件相关操作
  5. GXU - 7D - 区间求和 - 前缀和
  6. .NET 云原生架构师训练营(设计原则设计模式)--学习笔记
  7. 一种QC-LDPC码对突发噪声抑制的MATLAB仿真
  8. Oracle学习笔记--导航
  9. sqlserver 递归查询
  10. 如何使用.NET Core,SQL和HTML和JavaScript构建CRUD应用程序
  11. java 路径通配符_java实现路径通配符*,**,?
  12. Microsoft Office 2008 for Mac Service Pack 1 更新后无法启动程序问题解决方案
  13. 掘金企服:ICP经营许可证和ICP备案的区别
  14. XLA编译器用于JIT加速
  15. 大量discuz电脑模板企业模板手机模板免费下载,百度云下载地址
  16. cocos2d-x 添加自定义字体---中文,英文
  17. 使用css画太极,CSS画太极阴阳图
  18. 8*8LED点阵图原理(74HC595芯片使用方法)
  19. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)六 在express中建立路由
  20. 信号时频域分析 ——EMD/BEMD/LMD 算法原理

热门文章

  1. access超过255列数据_Access的数据类型,与Excel虽类似,数据库+sql更适合大量数据管理...
  2. oracle虚拟机 centos6.5,虚拟机oracle virtualbox 上安装centos6.5 网络设置
  3. lua如何判断是否支持cookie_我们应该如何判断机油是否变质?
  4. Linux内存中加载二进制,linux – 程序退出后二进制文件会留在内存中吗?
  5. python nonetype转换float_如何在Python中将NoneType值从聚合转换为float?
  6. 获取顶级域名与一级域名的python库-tld
  7. android的三个基础控件,Android基础控件——ProgressBar自定义的介绍、动画效果实现、附加三个漂亮的进度条...
  8. mysql日志恢复数据_Mysql 通过binlog日志恢复数据
  9. 中国移动系统集成公司2020春招技术综合在线编程题第二题
  10. 【科普】一图区分 IAAS + PAAS + SAAS