Java 文件上传 MultipartFile与ServletFileUpload

参考这个:https://www.cnblogs.com/liuyangv/p/8298997.html

Java文件上传 MultipartFile

1. 配置MultipartResolver

defaultEncoding="UTF-8"               是请求的编码格式,默认为iso-8859-1
maxUploadSize="1048576"            是上传文件的大小,单位为字节
uploadTempDir="fileUpload/temp"  为上传文件的临时路径

2.前台表单

1 <form enctype="multipart/form-data" id="J_uploadLocalImgForm" method="post">
2     <input type="hidden" name="authVenderId">
3     <input type="file" class="hide" id="J_uploadLocalImgFile" name="multipartFile" multiple="">
4 </form>

input 标签上写上multiple   这个时候就可以选择多个文件进行上传,去掉就不支持多选了

3. js 控制验证上传文件格式

一般的话 可能直接就再js中以什么结尾来判断格式,但这样是不准确的,如果文件的后缀被改掉呢? 如果你对文件格式要求严格的话,那最好在后台做一个比较严谨的验证。

var urlType = urlStr.substring(urlStr.lastIndexOf(".") + 1, urlStr.length);
urlType = urlType.toLowerCase();
if (urlType == "jpg" || urlType == "png" || urlType == "jpeg" || urlType == "gif" || urlType == "bmp") {}

4.java代码

Controller层
   /**
     * 本地图片上传
     * @param multipartFile multipartFiles
     * @return CallbackResult<String>
     */
    @RequestMapping("/multipleUploadWatermarkImg")
    public @ResponseBody CallbackResult<?> multipleUploadWatermarkImg(@RequestBody MultipartFile[] multipartFile){
       return service.multipleUploadWatermarkImg(multipartFile);
    }

这里有个地方,MultipartFile 后面加的这个[ ] 代表数组嘛,支持多个文件上传,如果就是单个文件的话,去掉就可以了,和前面前台是对应的

Service层这里就不写了,就是对multipartFile文件进行处理,如果是多个文件就先循环在处理,这里写几个MultipartFile的方法

  • getOriginalFilename()文件的路径
  • getName()返回表单中参数的名称。
  • getInputStream()返回一个InputStream以从中读取文件的内容。通过此方法就可以获取到流
  • getContentType()返回文件的内容类型
  • getSize()以字节为单位返回文件的大小
  • isEmpty()返回上传的文件是否为空,即,在多部分表单中没有选择任何文件,或者所选文件没有内容。
  • transferTo将收到的文件传输到给定的目标文件

这里的transferTo 很好用的,直接可以把文件保存到制定路径    multipartFile.transferTo(new File(path))

ServletFileUpload与MultipartFile冲突的问题

问题是俩个同时存在,其中一个使用时会获取不到上传文件,网上有人给出了解决方法,不过我没有去验证,

http://www.itkeyword.com/doc/8187524065876327482/ServletFileUpload-MultipartResolver-javaSpring

这里还有一个我遇到的小问题,当上传文件过大时该怎么办?

https://bbs.csdn.net/topics/392015065?locationNum=9&fps=1

这里有人给了个捕获异常的方法,但是我觉得有点太麻烦了,如果允许的话不如在前台进行判断

uploadLocalImgFile : function(e) {
     var file = e.target.files[0];
     if(file.type == "image/png" || file.type == "image/jpeg" || file.type == "image/jpg" ||  file.type == "image/gif"){
        if(file.size > 1024 * 1024){
            swal("上传图片的大小不能超过1M","","warning");
            return false;
     }   }
}

  

原文地址:https://www.cnblogs.com/tmxk-qfzz/p/11368228.html

时间: 2024-10-14 13:17:24

Java 文件上传 MultipartFile与ServletFileUpload的相关文章

java文件上传Demo

说到文件上传我们要做到: 1.引入两个包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 2.将form改为上传文件模式:enctype="multipart/form-data" 3.开始编写相关代码 这里会用到几个关键的类:磁盘文件工厂DiskFileItemFactory : 创建servlet文件上传类:ServletFileUpload 还有几个重要的方法:DiskFileItemFactory类用于将以临时文件形式保存在磁

java文件上传和下载

简介 文件上传和下载是java web中常见的操作,文件上传主要是将文件通过IO流传放到服务器的某一个特定的文件夹下,而文件下载则是与文件上传相反,将文件从服务器的特定的文件夹下的文件通过IO流下载到本地. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的j

Java文件上传的几种方式

文件上传与文件上传一样重要.在Java中,要实现文件上传,可以有两种方式: 1.通过Servlet类上传 2.通过Struts框架实现上传 这两种方式的根本还是通过Servlet进行IO流的操作. 一.通过Servlet类上传 1.编写Sevlet类 package com.chanshuyi.upload; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.

java文件上传-原始的Servlet方式

前言: 干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的.刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,RT,不能好高骛远,还是脚踏实地一点一点学技术吧,终将有一日,工资会涨的. java文件上传 传统的文件上传,不用jquery插件的话,就是用form表单提交,项目里用过uploadify,可以异步上传文件,原理我也没研究.现在说传统的form表单上传文件.

java文件上传下载

文件上传首先要引入两个核心包 commons-fileupload-1.2.1.jar commons-io-1.4.jar 下面是对文件上传和下载的一些代码做的一个简单封装,可以方便以后直接使用[使用时将封装好的jar包直接导入工程中即可使用] 上传文件核心代码 1 package com.lizhou.fileload; 2 3 import java.io.File; 4 import java.io.FileOutputStream; 5 import java.io.IOExcepti

java文件上传模块

今天做了一下java的简单的文件上传,使用的是commons-fileupload-1.3.1.jar.依赖于commons-io-2.4.jar.所以在导入包的时候也需要导入这个commons-io-2.4.jar.至于版本之间的关系,我并没有好好的去看,我使用的这两个还是很很友好合作的. 使用这两个包来上传文件到服务器端,是比较简单的.大致的就分为两个部分,一个是html页面部分的设置,一个是servlet部分的代码. html页面 1 <form action="uploadFile

java文件上传与下载

不多说,直接上实例代码!!! 我使用的是idea工具,maven管理. 首先,在pom.xml引入上传文件所需要的包. <!--fileupload--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </depe

java文件上传-使用apache-fileupload组件

目前文件上传的(框架)组件:Apache----fileupload .Orialiy – COS – 2008() .Jsp-smart-upload – 200M. 用fileupload上传文件: 需要导入第三方包: Apache-fileupload.jar – 文件上传核心包. Apache-commons-io.jar – 这个包是fileupload的依赖包.同时又是一个工具包. 使用springmvc,解决烦人的post乱码问题,新建maven项目: maven依赖: <depe

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件