transferto方法的应用_SpringMVC的 transferTo使用
在开发Web应用程序时比较常见的功能之一,就是允许用户利用multipart请求将本地文件上传到服务器,而这正是Grails的坚固基石——SpringMVC其中的一个优势。Spring通过对ServletAPI的HttpServletRequest接口进行扩展,使其能够很好地处理文件上传。扩展后的接口名为org.springframework.web.multipart.MultipartHttpServletRequest,其内容如清单7-31所示。
清单7-31org.springframework.web.multipart.MultipartHttpServletRequest接口
interface MultipartHttpServletRequest extends HttpServletRequest{
public MultipartFile getFile(String name);
public Map getFileMap();
public Iterator getFileNames();
}
如清单所示,MultipartHttpServletRequest接口简单地扩展了默认的HttpServletRequest接口,并提供一些用来处理请求文件的方法。
7.10.1使用multipart请求
实际上只要发现一个multipart请求,就表明在控制器实例中存在一个实现MultipartHttpServletRequest接口的request对象。我们可以通过清单7-31所示的方法来访问multipart请求中的上传文件,不过在处理上传文件之前,先来看一下上传表单的内容,如清单7-32所示。
清单7-32上传表单示例
粗体显示的是需要注意的部分,实际上一个上传表单只需要满足如下两点。
lenctype属性的属性值设为multipart/form-data。
linput的type属性的属性值设为file。
在前面的示例中,标签中属性type的值为file,且name属性的值为myFile,之所以需要name属性值,是因为在使用接口MultipartHttpServletRequest的getFile方法时需要使用name属性的值。例如在清单7-33中,代码中的upload操作会从请求中读取上传文件。
清单7-33读取上传文件
def upload = {
def file = request.getFile('myFile')
// 处理该文件
}
注意getFile方法不会返回一个java.io.File的实例,而是返回org.springframework.web.multipart.MultipartFile的一个实例,关于org.springframework.web.multipart.MultipartFile的详细信息,请参考清单7-34。如果在请求中没有找到文件则getFile方法返回null。
清单7-34org.springframework.web.multipart.MultipartFile接口
interface MultipartFile {
public byte[] getBytes();
public String getContentType();
public java.io.InputStream getInputStream();
public String getName();
public String getOriginalFilename();
public long getSize();
public boolean isEmpty();
public void transferTo(java.io.File dest);
}
在MultipartFile接口中定义了如下很多有用的方法。
l使用getSize()方法获得文件长度,以此决定允许上传的文件大小。
l使用isEmpty()方法判断上传文件是否为空文件,以此决定是否拒绝空文件。
l使用getInputStream()方法将文件读取为java.io.InputStream流对象。
l使用getContentType()方法获得文件类型,以此决定允许上传的文件类型。
l使用transferTo(dest)方法将上传文件写到服务器上指定的文件。
例如,如果上传的文件不为空并且大小不小于1024字节,那么可以按照清单7-35中的代码来实现。
清单7-35文件上传示例
def upload = {
def file = request.getFile('myFile')
if(file && !file.empty&& file.size < 1024){
file.transferTo( new java.io.File("/local/server/path/${file.name}" ) )
}
}
直接使用MultipartHttpServletRequ
est实例可以用来管理文件
transferto方法的应用_SpringMVC的 transferTo使用相关推荐
- transferto方法的应用_Java MultipartFile.transferTo方法代碼示例
本文整理匯總了Java中org.springframework.web.multipart.MultipartFile.transferTo方法的典型用法代碼示例.如果您正苦於以下問題:Java Mu ...
- transferto方法的应用_NIO的transferTo方法
大家好!我最近在做NIO,为什么我使用NIO的transferTo方法貌似数据没有加载到管道 求大神指点 package com.etwin.opps.policy.mvc; import java. ...
- transferto方法的应用_FileChannel中transferTo方法的使用
FileChannel中的transferTo方法并不一定能完整传输所有数据.在文档中解释如下: public abstract long transferTo(long position, long ...
- MultipartFile的transferTo方法注意事项
前言 最近用SpringBoot写文件上传功能,使用参数绑定之后确实是非常的方便了.但是,项目部署就出现了问题,搞得我一脸懵逼.后来,才发现是因为我使用了相对路径导致的,这个绝对是一个坑人的地方,不过 ...
- transferto的流这么关闭_Java 9中InputStream的transferTo()方法的重要性?
在Java 9中,transferTo()方法已添加到InputStream类中.该方法已用于在Java中将数据从输入流复制到输出流.这意味着它将从输入流中读取所有字节,然后按读取顺序将字节写入输出流 ...
- 聊聊MultipartFile的transferTo方法
默认已经知道:MultipartFile 这个类一般是用来接受前台传过来的文件. 那transferTo方法有什么作用呢? 打开源码: public void transferTo(File des ...
- java file transferto_jvm源码分析之FileChannel.transferTo()方法
FileChannel.transferTo()方法 public abstract long transferTo(long position, long count, WritableByteCh ...
- transferTo 方法
package com.common.learn; import java.io.BufferedReader; import java.io.File; import java.io.FileInp ...
- MultipartFile的transferTo方法的坑
前言 最近用SpringBoot写文件上传功能,使用参数绑定之后确实是非常的方便了.但是,项目部署就出现了问题,搞得我一脸懵逼.后来,才发现是因为我使用了相对路径导致的,这个绝对是一个坑人的地方,不过 ...
最新文章
- Linux下完全卸载ORACLE 10G的方法
- python—sql语句参数化
- android handler 主线程吗,[android开发]非主线程进行handler操作
- oracle 文件写 n r,文本模式读写文件中\r和\n的问题
- ECCV 2020 《Propagating Over Phrase Relations for One-Stage Visual Grounding》论文笔记
- 程序员怎样锻炼编程思维(学习方法)
- asp.net MVC留言本示例
- 动态三角形(动态规划思想入门)
- scala reduce和Fold
- 【ArcGIS Server】切片时C盘空间不足(本地缓存目录空间不足)
- @Formula的使用
- Win10 IE浏览器无法打开HTTPS网站的解决方法--win10专业版
- 2021-09-21
- safetynet android,SafetyNet Attestation API:远程评估Android设备的真伪
- mc服务器不显示皮肤,游戏中不显示皮肤的可能原因
- 关于大数据后端粉丝交流群
- centos7安装并使用licode四:下载licode并使用
- 不可错过的javascript迷你库 1
- 新时代高校辅导员工作素养的新要求及提升路径(非原创)
- 峰面积峰高半峰宽_峰高峰面积的计算方法.
热门文章
- dx200手环使用方法_dx200电子烟安装说明书
- 多一份胜利,多一份胆量
- 笔记本触摸板按键不能用、不能双指三指滑动和双指单击右键解决办法
- python根据经纬度转换详细地址_基于python实现地址和经纬度转换
- 麻将癞子剪枝算法效率优化
- 联想笔记本有福啦:最新联想Windows 7简体中文旗舰版OEM光盘镜像下载
- [转载]汇总各浏览器核心(js引擎及排版引擎)深究
- pytorch构建deeplabv3+
- ebay如何通过html上传图片,eBay怎么上传图片?分享2个给eBay产品添加图片的方法...
- Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)