**自己对于SSM文件上传的一些心得**

刚开始的时候也是在网上寻找一些简单的案例,可能我的这篇文章不是最好的,但是这些都是我自己慢慢的摸索以及自己的尝试的一些心得,希望对各位有所帮助。

其实文件的上传也不是特别的难,可能针对初学者来说是有一些难以理解,但是只要自己认真的分析一些,其实逻辑并不是特别的难。

首先做这个案例需要准备两个jar,我用的是maven,具体依赖如下:

commons-io

commons-io

2.6

commons-fileupload

commons-fileupload

1.3.3

上面两个jar的依赖便是准备工作了,接下来便是上传的页面了,相信这个不会难倒小伙伴们,在此就直接把代码给大家,不做过多的解释了。

pageEncoding="UTF-8"%>

文件上传下载

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

选择文件:

type="submit" value="上传">

多说一句这行代码的作用便是让浏览器解析jstl的代码,有些小伙伴们编写了jsp代码运行的时候如果从session中取数据有可能就是不会解析,从而取不到自己想要的数据。

下面便是运行界面的效果图

前面一些相信对于大家来说就是洒洒水了,关键的便是在控制层编写相应的逻辑代码了。

首先我们便是要得到文件的名称

//获取文件名称

String fileName = file.getOriginalFilename();

获得了文件的名称之后,如果你需要给文件一个新的名称可以使用UUID时间戳的方式给它一个新的名称,案例中没有使用,如果感兴趣的话,我也把代码给大家。

//新文件名

String newFileName = UUID.randomUUID() + fileName;

得到了文件名称后,便是需要解决上传文件路径的问题了,最简单的便是自己设置一个绝对路径,我在本案例中便是使用的绝对路径具体代码如下:

//设置上传路径

String path = "D:/test1/";

若是想要放在项目路径下的话只需要修改自己相应的代码即可:

//获得项目的路径

ServletContext sc =request.getSession().getServletContext();//上传位置

String path = sc.getRealPath("/files") + "/"; //设定文件保存的目录

注意:在你路径下必须是“/”结尾,若是没有这个"/"到时候效果可能不会如你所想,想要实验的小伙伴们可以去试一试,在这里我便不演示了。

接下来的便是文件上传的核心了:文件上传主要是利用了流的思想。流便是:输入流和输出流(不要怪我啰嗦,主要是让一些不太清楚的小伙伴们理解,大神忽略即可)。

首先是判断下自己所设置的路径是否存在,如果没有判断的话,要是路径不存在,那么你的后台便会报错,具体的错误那就靠各位小伙伴们自己去尝试了,我就不在这里演示了,你只有自己尝试才会更加的注意这个问题,等下次报了相同的异常的时候自己就知道如何去解决。具体代码如下:

//文件上传

File f = newFile(path);//判断路径是否存在,不存在则创建

if(!f.exists()){

f.mkdirs();

}

f.exists是一个判断这个路径是否存在的,返回的结果是一个Boolean值,如果存在返回true不存在则但会false,!便是对其取反,(就是原来是true的变成false,false变成true);f.mkdirs();便是创建对应文件。如果文件位置不存在的话,f.exists便是false ,然后对其取反便为true便会执行if里面的语句,从而创建对应的文件路径。

接下来便是处理文件上传了。

//判断上传文件是否为空

if(!file.isEmpty()){try{

FileOutputStream fos= new FileOutputStream(path +fileName);

InputStream in=file.getInputStream();int a = 0;if((a = in.read())!=-1){

fos.write(a);

}

in.close();

fos.close();

}catch(Exception e){

e.printStackTrace();

}

}

首先便是判断下用户上传的文件是否为空(就是用户是否上传了文件),若是你文件都没有选择便点击上传的话我们后台也没有必要去处理他了吧。

用户上传文件之后

这行代码就是开启一个输出流,输出的路径便是之前我们设置的路径,注意的是这里需要处理一下异常,我这里是直接捕获一个最大的异常。

FileOutputStream fos = new FileOutputStream(path + fileName);

这个便是得到上传文件的输入流

InputStream in = file.getInputStream();

下面的代码是通过一个变量a来接收输入流,一边读,然后输出流一边的写出去,当读完之后变量a的值便为-1,所以这便成了一个判断的依据,当变量a为-1的时候也就代表已经读完了,而且同时也写完了

int a = 0;if((a = in.read())!=-1){

fos.write(a);

}

当读完之后小伙伴们记得把输入流和输出流关闭哦,如果不关闭的话会造成资源浪费的,而且还需注意的是大家要按照先开后关的原则哦。

in.close();

fos.close();

接下来的便是完整的代码。

@Controller

@RequestMapping("/file")public classFile2Controller {

@PostMapping("/load")publicString fileload(MultipartFile file, HttpServletRequest request) {//获取文件名称

String fileName =file.getOriginalFilename();//设置上传路径

String path = "D:/test1/";//文件上传

File f = newFile(path);//判断路径是否存在,不存在则创建

if(!f.exists()){

f.mkdirs();

}//判断上传文件是否为空

if(!file.isEmpty()){try{

FileOutputStream fos= new FileOutputStream(path +fileName);

InputStream in=file.getInputStream();int a = 0;if((a = in.read())!=-1){

fos.write(a);

}

in.close();

fos.close();

}catch(Exception e){

e.printStackTrace();

}

}return null;

}

}

效果图如下:

以上便是个人对于文件上传的一些心得,可能写的不是特别的好,只是希望对小伙伴们有一些帮助,特别是对于一些萌新们,只希望能够帮助你们就好。(最后希望大神们勿喷)

ssm上传文件获取路径_SSM文件上传相关推荐

  1. ssm上传文件获取路径_ssm框架实现图片上传显示并保存地址到数据库(示例代码)...

    本案例是通过springmvc+spring+mybatis框架以商品上传为例,实现的图片上传功能,并把图片的地址保存到数据库并在前台显示上传的图片. 本项目是使用maven搭建的项目,首先看下项目结 ...

  2. ssm上传文件获取路径_SSM实现图片上传下载功能

    0. 基本步骤框架搭建 实现带图片上传的注册功能 实现下载功能 1. 框架搭建 Step1 创建开发项目 创建基础MVC包结构:controller.service.mapper.pojo Step2 ...

  3. 拖拽获取文件路径html,Lovestu - electron 原生拖拽文件获取路径

    实现拖入文件获取路径,不用官方提供的消息模式,使用HTML5原生的拖放获取即可. 我使用了jQuery,记得引用 引用方法,在程序目录,运行命令:npm install jquery --save 创 ...

  4. autocad.net通过支持文件搜索路径查找文件

    //通过支持文件搜索路径查找文件 string path = HostApplicationServices.Current.FindFile("head.dwg", db, Fi ...

  5. struts文件上传,获取文件名和文件类型

    Action中还有两个属性:uploadFileName和uploadContentType,这两个属性分别用于封装上传文件的文件名.文件类型.这是Struts2设计的独到之处:Strut2的Acti ...

  6. php上传文件默认路径,PHP文件上传到指定目录的实现过程实例解析

    摘要:文件上传其实很简单,通过form表单就可以实现.但form表单上传文件只是把文件放到服务器的临时目录,它还需要我们把上传到临时目录的文件转放到服务器的指定目录.简单的说:把文件从临时目录移动到指 ...

  7. PHP上传rar获取不到文件,WordPress不让上传.rar格式附件的原因及解决办法

    使用最新的WordPress2.9.2,发现不能上传rar附件.搜索了一下,找到一个插件PJW Mime Config可以解决此问题. 其设置界面如下: 其中ac3.mpa.flv是插件自带的设置,r ...

  8. PyQt5 技术篇-调用文件对话框获取文件、文件夹路径。文件对话框返回选中的多个文件路径

    下面是常用的4个文件对话框动作: QFileDialog.getExistingDirectory() # 返回选中的文件夹路径 QFileDialog.getOpenFileName() # 返回选 ...

  9. 服务器文件绝对路径,服务器文件绝对路径

    服务器文件绝对路径 内容精选 换一换 已获取自动化工具包,并上传到服务器完成解压,得到完整的软件文件夹tsdbtool.已下载依赖:GCC-7.3.0.CMake-3.5.2的源码包,放到tsdbto ...

最新文章

  1. 为什么越来越多的人都不再愿意做程序员了?
  2. Leetcode455分饼干-贪心
  3. 网络工程师学习参考资料路由器配置案例分析
  4. 最新的INTEL FPGA时序分析资料
  5. Java学习之JDK的安装与配置
  6. python用于人工智能哪些领域_Python那么火?哪些领域可以用它?
  7. oracle 12c transaction guard,oracle 12c的Data guard中废弃
  8. 干货!Python与MySQL数据库的交互实战
  9. 【CodeForces】741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
  10. 第二周java基础学习内容
  11. IOS键盘样式风格有关设置
  12. 入门STM32--怎么学习STM32
  13. 2020 BAT/大厂/银行 Java后端开发 校招实习生要求
  14. java实现来电弹屏_客服系统如何实现1秒来电弹屏?
  15. ubuntu系统备份、系统镜像制作教程
  16. 群晖Docker的高级操作
  17. 小米微信自动加好友appium
  18. 用blockly制作诗词学习游戏
  19. linux socket函数详解,linuxSocket_函数.doc
  20. 离散信源信息量、平均信息量的计算

热门文章

  1. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行独立成分分析ICA(Independent components analysis)、设置method参数为ica
  2. Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)
  3. R计算赤信息指标(Akaike information criterion,AIC)
  4. python代码实现二叉树的分层打印
  5. 机器学习数据清洗之异常数据处理、标准差法、MAD法、箱图法、图像对比法、异常值处理准则
  6. 基因组组装----k-mer
  7. ReMILO:使用短读和长读的参考辅助错配检测算法
  8. go语言----函数 结构体 接口 多态
  9. 生物信息行业应该具备哪些基础素养?重点应该放在计算机方面还是生物方面或者说其他?
  10. 三代测序数据分析之文献推荐