简介
DownAction用于帮助方便的去实现文件下载功能的一个控件,示例界面如下:
安装
UploadAction不是dorado-core提供的,是由Uploader项目提供的,因此你首先需要下载控件对应的jar,如Maven配置代码:
<dependency> <groupId>com.bstek.dorado</groupId> <artifactId>dorado-uploader</artifactId> <version>1.0.4</version> </dependency>
下载好对应的jar,之后更新项目规则文件就可以在IDE的控件列表中看到这个UploadAction.
基本使用说明
首先请了解AjaxAction的基本使用技巧。DownloadAction与它们基本类似。
可以直接在DownloadAction中设置fileProvider,指定服务器端处理文件下载的服务类:
FileProvider的处理代码就与我们定义DataProvider方法很类似(返回一个DownloadFile对象就可以):
@FileProvider public DownloadFile download(Map<String, String> parameter) throws IOException { String fileName = parameter.get("file"); return new DownloadFile(new File(fileName));//返回一个文件对象就可以 }
也可以这么写:
@FileProvider public DownloadFile download(Map<String, String> parameter) throws IOException { String fileName = parameter.get("file"); InputStream inputStream = xxx;//获取到对应的InputStream return new DownloadFile(fileName, inputStream); }
parameter参数是客户端上传文件同时附带的其他参数。
DownloadAction的重要属性说明
inlineMode
默认值为off,就是直接下载,如果设置为browser,将会将请求头的Content-Disposition设置为inline,也就是说浏览器会根据下载的文件类型在它能识别的情况下直接预览。
DownloadFile对象说明
charset
这个属性只对文本类型的文件下载有意义,它表示文件内容的编码格式,这个属性最终会被设置到Response的contentType属性中,默认为UTF-8
fileName
文件下载时对应的文件名,通常我们不需要设置这个属性,构造DownloadFile的时候,会自动根据File对象的name读取。
关于中文文件名的问题,默认系统会对文件名做如下转换处理,并将转换后的字符串作为文件下载时Response参数filename的值:
new String(file.getName().getBytes("UTF-8"),"iso8859-1")
如果这种转换规则规则不符合你的要求,你也可以自己处理转换,并将转换后的字符串设置为DownloadFile的fileName属性就可以。
contentType
Download会自动计算文件的contentType,但是在特殊情况下如果你希望自己指定Response的contentType,你可以通过DownlaodFile的contentType属性设置
contentType对照表: http://tool.oschina.net/commons