MultipartFile文件上传的实例

什么是MultipartFile

MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。【来自百度知道】

 

方法总结
byte[]

getBytes()

以字节数组的形式返回文件的内容。

String
getContentType

返回文件的内容类型。

FileItem
getFileItem()

返回底层的org.apache.commons.fileupload.FileItem实例。

InputStream
getInputStream()

返回一个InputStream来读取文件的内容。

String
getName()

以multipart 表格的形式返回参数的名称。

String
getOriginalFileName()

返回客户机文件系统中的原始文件名。

long
getSize()

以字节的形式返回文件的大小

String
getStorageDescription()

返回multipart的内容和存储位置描述。


protected

boolean


isAvailable()

确定Multipart内容是否仍然可用。

boolean
isEmpty()

返回上传的文件是否为空,也就是说,在多部分表单中没有选择任何文件,或者选择的文件没有内容。

void
transferTo(File dest)

将接收到的文件传输到给定的目标文件。

单文件上传

前段HTML页面:

<form id="uploadForm" enctype = "multipart/form-data">
    <input type ="text" id ="uploadParams" vlaue = "uploadParams" />
    <input type = "file" name = "uploadfile" id = "uploadfile" />
    <input type = "button" id = "btnSave" onclick = "uploadSubmit" />
</form>

JS处理,需要引用JQuery.js

function uploadSubmit() {
    if (!$("#uploadfile").val()) {
        console.log("上传失败,文件是空的");
        return false;
    }
    var paramValue = $("#uploadParams").val();
    var formData = new FormData($("#uploadForm"));
    formData.append("paramValue",paramValue);
    $.ajax({
        url: "your server url",
        type: "post",
        data: formdata,
        success: function (result) {
            console.log("上传成功");
        },
        error: function (a, b, c) {
            console.log("失败了");
        },
        complete: function () {
            console.log("请求最后处理的方法");
        },
    })
}

FormData对象的使用

FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用。如果表单enctype属性设为multipart/form-data ,则会使用表单的submit()方法来发送数据,从而,发送数据具有同样形式。

可以创建一个FormData对象,然后调用它的append()方法来添加字段。

后台Java处理:

@RequestMapping("upload")
public String upload(@RequestParam("uploadfile") MultipartFile file,@RequestParam("paramValue") String paramvalue,HttpServletRequest request){
    try{
        //得到文件"upload"的服务器路径
        String sysPath=request.getSession().getServletContext().getRealPath("upload");
        String fileName=file.getOriginalFilename();    //得到文件名
        File filePath=new File(sysPath,fielName);    //得到文件路径
        if(!filePath.getParentFile().exists()){    //判断服务器当前路径文件夹是否存在
            filePath.getParentFile().mkdirs();    //不存在则创建文件夹
        }
        BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(filePath));
        out.write(file.getBytes());
        out.flush();
        out.close();
    }catch(fileNotFoundException e){
        e.printStrackTrace();
        return "失败";
    }catch(IOException e){
        e.printStrackTrace();
        return "失败";
    }
}

BufferedOutputStream(缓冲输出流),继承于FilterOutputStrema,它的作用是为另一个输出流提供“缓冲功能”,该类实现一个缓冲输出流。通过设置这样的输出流,应用程序可以将字节写入底层输出流,而不必为写入的每个字节调用底层系统。

方法总结
修饰符和类型 方法和描述
void
flush()

刷新此缓冲输出流。

void
write(byte[] b,int off,int len)

从指定字节数组的偏移处开始将len字节写入此缓冲输出流。

void
write(int b)

将指定的字节写入此缓冲输出流。

多文件上传:

与单文件差别不大:前端多个<input type="file">,后端接收的时候方法参数使用数组:

@RequestParam("param") MultipartFile []  file

参考:Multipart 官方API

原文地址:https://www.cnblogs.com/KeithYang/p/10992288.html

时间: 2025-01-17 18:20:31

MultipartFile文件上传的实例的相关文章

jQuery.uploadify文件上传组件实例讲解

1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好,无刷新,带上传进度等等.在最近的短信平台开发中,使用Uploadify进行文件上传. Uploadify官网地址是:http://www.uploadify.com/ 可满足项目开发需求. 下载地址:http://www.uploadify.com/wp-content/uploads/files/

【SSH2(实践篇)】--Struts2文件上传下载实例

上篇文章又一次回顾了Struts2的运行机制,对它的运行步骤做了一步步的解析,这个解析不但再一次理清了Struts2的使用方法,而且对它的映射机制进行了深入的解析,并在最后通过一个实例来介绍了Struts2的一种使用方法,这里将做一个有关文件上传下载的实例. 一.文件上传 Struts2并没有提供文件上传的组件,所以想要实现上传的功能就必须通过第三方组件来实现,在Struts2引用的jar中包含了文件上传的组件,它是通过commons-fileupload.jar和commons-io.jar来

PHP实现视频文件上传完整实例

PHP实现视频文件上传完整实例 转载 这篇文章主要介绍了PHP实现视频文件上传的技巧,包含了PHP配置信息的设计及大文件的处理,需要的朋友可以参考下 本文以一个完整实例的形式实现了视频文件上传的功能.虽然是比较基础的应用,仍有一定的参考价值.分享给大家供大家参考之用.具体方法如下: 首先,对PHP来说视频也属于文件,我们利用这个道理,可以通过与上传普通文件类似的方式实现上传PHP视频文件.不同的是视频文件一般较大,上传时间长,而php配置文件也对上传文件的大小有限制.如果需要更好地用PHP实现文

Struts2 + uploadify 多文件上传完整实例!

首先我这里使用的是  Jquery  Uploadify3.2的版本  导入相关的CSS  JS    <link rel="stylesheet" type="text/css" href="<%=basePath%>css/uploadify/uploadify.css"> <script src="<%=basePath%>js/jquery.min.js"></sc

SpringMVC使用MultipartFile文件上传,多文件上传,带参数上传

一.配置SpringMVC 在spring.xml中配置: <!-- springmvc文件上传需要配置的节点--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="-1&

SpringMVC 用MultipartFile文件上传

一.配置文件:SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver --> <beans:bean id="multipartResolver" class="org.springframework.web.multipart.com

SpringMVC实现 MultipartFile 文件上传

1. Maven 工程引入所需要的依赖包 2. 页面需要开放多媒体标签 3. 配置文件上传试图解析器 4. 接收图片信息,通过 IO 流写入磁盘(调用解析其中的方法即可) 如下: 1.1 引入所依赖的jar包 1 <dependency> 2 <groupId>commons-io</groupId> 3 <artifactId>commons-io</artifactId> 4 <version>2.4</version>

记录-spring MultipartFile 文件上传

注意:以下上传和下载方法未必完全正确,不同浏览器效果不同,建议不要使用IE /** * 简单的文件上传 * @author:qiuchen * @createTime:2012-6-19 * @param request * @param response * @param errors * @return * @throws Exception */ @RequestMapping(value = "/upload", method = RequestMethod.POST) pub

VUE大文件上传解决方案实例代码

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下