[JavaWeb基础] 009.Struts2 上传文件
2024-09-07 14:14:17
在web开发中,我们经常遇到要把文件上传下载的功能,这篇文章旨在指导大家完成文件上传功能
1.首先我们需要一个上传文件的页面。
<!--在进行文件上传时,表单提交方式一定要是post的方式,
因为文件上传时二进制文件可能会很大,还有就是enctype属性,
这个属性一定要写成multipart/form-data,
不然就会以二进制文本上传到服务器端
-->
<form action="fileUpload.action" method="post" enctype="multipart/form-data">
用户名: <input type="text" name="username"><br><br>
文件: <input type="file" name="file"><br><br>
<input type="submit" value="提交">
</form>
2.然后我们要配置Struts2文件。
<action name="fileUpload" class="com.babybus.sdteam.action.FileUploadAction">
<result name="success">/Success.jsp</result>
</action>
3.最后我们要有一个Action类来把上传的文件转存到服务器
public String execute() throws Exception
{
// 设置要上传的文件夹目录
String root = ServletActionContext.getServletContext().getRealPath("/upload");
// 根据上传的文件,创建输入流
InputStream is = new FileInputStream(file);
// 输出文件夹
File outfloder = new File(root);
// 输出文件
File outfile = new File(root, fileFileName);
// 目录不存在创建目录
if(!outfloder.exists()){
outfloder.mkdirs();
}
// 文件不存在创建文件
if(!outfile.exists()){
outfile.createNewFile();
}
// 创建输出流
OutputStream os = new FileOutputStream(outfile); // 接受数据用的临时字节数组
byte[] buffer = new byte[500];
int length = 0;
// 遍历把内容写到输出文件中
while(-1 != (length = is.read(buffer, 0, buffer.length)))
{
os.write(buffer);
}
// 关闭输出流,关闭输入流
os.flush();
os.close();
is.close();
// 返回结果跳转标识
return SUCCESS;
}
4.通过以上几步,我们就可以简单的实现了文件上传功能。
结语
- 受益,掌握了Struts2 上传文件
本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4678977.html
最新文章
- 【BZOJ-2597】剪刀石头布 最小费用最大流
- Javascript中call和apply的区别和用法
- Python traceback【转】
- ROS学习笔记(四)——环境变量配置
- saltstack安装配置(halite)
- jQuery Mobile 过渡效果
- SimpleDataFormat格式
- LR中Vugen的多进程与多线程(脚本命令行)
- 查看innodb表空间
- 20160130.CCPP体系详解(0009天)
- 图解Javascript——作用域、作用域链、闭包
- Jquery实现选项卡效果
- Oracle聚合函数
- leetcode 566. 重塑矩阵 c++ 实现
- Bayesian RL and PGMRL
- mysql 将行拼接成字符串的方法
- 精通initramfs构建step by step
- VMware如何给虚拟机添加新硬盘
- Scala语言开发入门
- Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性
热门文章
- 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)
- 一只简单的网络爬虫(基于linux C/C++)————支持动态模块加载
- auto_ptr和shared_ptr
- 吃零食 csust oj 贪心
- 【FreeRTOS学习04】小白都能懂的 Queue Management 消息队列使用详解
- vue 路由钩子。
- Oracle用decode函数或CASE-WHEN实现自定义排序
- python实现摇骰子猜大小函数升级没把加注及三大运行商短信验证过滤
- 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块
- servlet--http接口简单的创建及调用