1.文件上传
//FileUpLoadAction .java
public class FileUpLoadAction {
private File image; //取得文件
private String imageFileName; //取得文件名
private String imageContentType; //取得文件类型
private File[] images; //取得多个文件
private String[] imagesFileName; //取得多个文件名
private String[] imagesContentType; //取得多个文件类型
public String executeSimple() throws Exception{ //上传单个文件
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
System.out.println(realpath);
if(image!=null){
File savefile = new File(new File(realpath), imageFileName);
if(!savefile.getParentFile().exists()) savefile.getParentFile().mkdirs();
FileUtils.copyFile(image, savefile);
ActionContext.getContext().put("message", "上传成功");
}
return "success";
}
public String executeMutiple() throws Exception{ //上传多个文件
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
System.out.println(realpath);
if(image!=null){
File savedir = new File(realpath);
if(!savedir.exists()){
savedir.mkdirs();
}
for(int i = 0 ; i<image.length ; i++){
File savefile = new File(savedir, imageFileName[i]);
FileUtils.copyFile(image[i], savefile);
}
ActionContext.getContext().put("message", "上传成功");
}
return "success";
}
.....//getters and setters
}
//上传单个文件表单
<form action="upload_executeSimple" enctype="multipart/form-data" method="post">
文件:<input type="file" name="image"><br/>
<input type="submit" value="上传"/>
</form>
//上传多个文件表单, 注意enctype="multipart/form-data"
<form action="upload_executeMutiple" enctype="multipart/form-data" method="post">
文件1:<input type="file" name="images"><br/>
文件2:<input type="file" name="images"><br/>
文件3:<input type="file" name="images"><br/>
<input type="submit" value="上传"/>
</form>
//struts.xml
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.multipart.maxSize" value="10701096"/>
<package name="upload" namespace="/" extends="struts-default">
<action name="upload_*" class="FileUpLoadAction" method="{1}">
<result name="success">/WEB-INF/page/message.jsp</result>
</action>
</package>
</struts>
2. 文件下载
public class DownloadAction extends ActionSupport {
private String fileName;
public void setFileName() {
String tempFileName = ServletActionContext.getRequest().getParameter("name");
try {
// 对tempFileName进行UTF-8解码
// 这里使用request.setCharacterEncoding解码无效.
// 只有解码了getDownloadFile()方法才能在下载目录下正确找到请求的文件
tempFileName = new String(tempFileName .getBytes("ISO-8859-1"), "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
this.fileName = tempFileName ;
}
//此方法对应的是struts.xml文件中的:
// <param name="contentDisposition">attachment;filename="${fileName}"</param>
// 这个属性设置的是下载工具下载文件时显示的文件名,
// 要想正确的显示中文文件名,我们需要对fileName再次编码
//否则中文名文件将出现乱码,或无法下载的情况
public String getFileName() throws UnsupportedEncodingException {
fileName=new String(fileName.getBytes(),"ISO-8859-1");
return fileName;
}
//此方法对应的是struts.xml文件中的:
// <param name="inputName">downloadFile</param>
//返回下载文件的流,可以参看struts2的源码
public InputStream getDownloadFile() {
this.setFileName();
return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + fileName);
}
public String execute() throws Exception {
return SUCCESS;
}
}
struts.xml 其中的EL表达式,是要注意的
<action name="download" class="com.test.action.DownloadAction">
<result name="success" type="stream">
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="inputName">downloadFile</param>
<!--对应DownloadAction.getDownloadFile()-->
</result>
</action>
分享到:
相关推荐
"aldor007-mort"提供了文件存储功能,支持上传、下载和管理文件。这可能涉及到HTTP上传、文件元数据管理、存储策略(如分布式存储、冗余备份)等技术。通过源代码,我们可以学习如何使用Go语言的`net/http`包来构建...
"OneNeuron_pypi-Soumyadipta007-0.0.2.tar.gz"是PyPI上的一个特定软件包,由Soumyadipta007开发,版本号为0.0.2,格式为tar.gz压缩文件。 描述部分明确了这个资源是从PyPI官方获取的,全名即为压缩包的文件名,...
对于AP5030DN-S,用户需下载名为“AP5030DN-S-FAT-V200R007C20SPC300”的压缩包,内含所需的所有更新文件。在升级前,确保AP处于安全的关机状态,然后通过管理界面或者TFTP服务器将固件上传至设备。遵循正确的升级...
GitHub.io域名是GitHub为用户提供的一种免费静态网页托管服务,用户可以通过上传HTML、CSS和JavaScript文件来构建自己的网站。 【描述】:"gijoe007-github.io" 的描述并未提供具体信息,可能是因为这个站点没有...
在本教程中,您可以学习 迭代请求文件 和 上传多个文件 一次使用 Django 在 Python 中。本教程旨在为学生和初学者提供学习开发动态网站的参考 姜戈.在这里,我将提供一些步骤来创建一个简单的 Web 应用程序,该应用...
在网页开发中,文件上传是一项常见且重要的功能。"文件上传js css" 指的是使用JavaScript和CSS技术实现文件上传的交互与样式设计。在这个主题中,我们将深入探讨JavaScript和CSS在文件上传中的应用,以及如何通过...
在这个项目中,SSH2框架与Ajax技术结合,实现了一个带进度条的文件上传功能,并且这个功能已经被封装成了自定义标签,方便在页面上直接使用。 首先,让我们深入理解SSH框架的每个组件: 1. **Struts2**:Struts2是...
文件上传与下载模块是Web应用中的重要组成部分,它允许用户在服务器上存储和获取文件,这对于数据共享、信息交流和在线服务来说至关重要。本模块主要基于JSP(Java Server Pages)技术实现,JSP是一种动态网页开发...
3. **设置TFTP服务器**:启动3CDaemon,设置好TFTP服务器,将固件文件上传至服务器根目录,便于AP访问。 4. **连接AP**:使用Putty通过SSH连接到AP5030DN-S,确保你知道设备的IP地址,登录用户名和密码。 5. **...
总的来说,音乐DJ网站系统源代码--007是一个集音乐播放、社区互动、内容管理于一体的平台,其技术栈包括ASP开发、数据库管理、音频流媒体、用户账户系统、文件上传和推荐算法等多个方面。开发者在使用或学习此系统时...
在本项目"TP007-RTC控制LED灯翻转.zip"中,我们涉及的是一个基于微控制器(可能为Pyboard或类似的开发板)的实时钟(RTC)应用,通过RTC来控制LED灯的翻转效果。这个项目是学习嵌入式系统、硬件交互以及基础编程的一...
用户应按照升级指南的步骤,将AP设备设置为升级模式,然后通过网络或本地连接上传固件文件,完成升级过程。升级前务必备份现有配置,以防意外情况发生。 总的来说,华为AP3030DN-FAT-V200R007C20SPC700是一款适用于...
Android 多线程可断点续传上传文件至服务器Demo(Android端编辑器:Android Studio,服务器端编辑器:Eclipse,请注意手机默认下载目录必须要有t007.zip,服务器端必须有D:\temp\temp目录)
博文链接:https://tj007-bo.iteye.com/blog/128181
在Ruby on Rails(Rails)框架中,为文件上传添加进度条功能可以显著提升用户体验,让用户在上传大文件时能够清楚地看到进度,增加交互性。本文将深入探讨如何在Rails应用中实现这一功能。 首先,我们需要理解文件...
修正327补丁导致doc文件不能上传的BUG 3: 修正UBB编辑器模式下发布的相册不能以相册模式显示的BUG 4: 整站加密后相片不在整站中显示 5: 修正日志不允许回复时仍能被恶意回复的BUG 6: 修正摘要中的图片的绝对路径...
升级固件的过程一般包括下载新固件,登录到AP的管理界面,选择固件升级选项,并上传新的固件文件。升级后,设备可能会重启并自动应用新的配置。注意,在升级过程中应确保AP与电源连接稳定,避免因断电导致升级失败或...