在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

最新文章

  1. 【BZOJ-2597】剪刀石头布 最小费用最大流
  2. Javascript中call和apply的区别和用法
  3. Python traceback【转】
  4. ROS学习笔记(四)——环境变量配置
  5. saltstack安装配置(halite)
  6. jQuery Mobile 过渡效果
  7. SimpleDataFormat格式
  8. LR中Vugen的多进程与多线程(脚本命令行)
  9. 查看innodb表空间
  10. 20160130.CCPP体系详解(0009天)
  11. 图解Javascript——作用域、作用域链、闭包
  12. Jquery实现选项卡效果
  13. Oracle聚合函数
  14. leetcode 566. 重塑矩阵 c++ 实现
  15. Bayesian RL and PGMRL
  16. mysql 将行拼接成字符串的方法
  17. 精通initramfs构建step by step
  18. VMware如何给虚拟机添加新硬盘
  19. Scala语言开发入门
  20. Spring Boot 2 实践记录之 使用 ConfigurationProperties 注解将配置属性匹配至配置类的属性

热门文章

  1. 【K8S】K8S 1.18.2安装dashboard(基于kubernetes-dashboard 2.0.0版本)
  2. 一只简单的网络爬虫(基于linux C/C++)————支持动态模块加载
  3. auto_ptr和shared_ptr
  4. 吃零食 csust oj 贪心
  5. 【FreeRTOS学习04】小白都能懂的 Queue Management 消息队列使用详解
  6. vue 路由钩子。
  7. Oracle用decode函数或CASE-WHEN实现自定义排序
  8. python实现摇骰子猜大小函数升级没把加注及三大运行商短信验证过滤
  9. 「雕爷学编程」Arduino动手做(34)——三色LED交通灯模块
  10. servlet--http接口简单的创建及调用