从零实现MVC框架之文件上传(8)
来源:互联网 发布:linux服务器视频教程 编辑:程序博客网 时间:2024/05/30 23:18
这里使用commons-io-2.4.jar和commons-fileupload-1.3.1.jar实现文件上传,所以事先要把这两个包加入到项目中。
文件解析类
package com.hc.web.io;import java.util.Iterator;import java.util.List;import javax.servlet.http.HttpServletRequest;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.fileupload.servlet.ServletRequestContext;public class UploadFileParse {public static MutipartFile parseRequest(HttpServletRequest request) throws Exception {MutipartFile mf = new MutipartFile();DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload sfu = new ServletFileUpload(factory);List<FileItem> items = sfu.parseRequest(new ServletRequestContext(request));Iterator<FileItem> iter = items == null ? null : items.iterator();while (iter != null && iter.hasNext()) {FileItem item = (FileItem) iter.next();if (item.isFormField()) {String field = item.getFieldName().trim();String value = item.getString("UTF-8").trim();mf.put(field, value);} else if (!item.isFormField()) {mf.setFileName(item.getName());mf.setInputStream(item.getInputStream());}}return mf;}}
文件信息类
package com.hc.web.io;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.HashMap;import java.util.Map;public class MutipartFile {private Map<String,String> params = new HashMap<>();private InputStream inputStream;private String fileName;public void put(String key,String value){params.put(key, value);}public void setInputStream(InputStream inputStream) {this.inputStream = inputStream;}public Map<String,String> getParams(){return params;}public String getString(String key){return params.get(key)==null?null:params.get(key);}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}public void copyToFile(File file) throws IOException{FileOutputStream fos = new FileOutputStream(file);byte [] buffer = new byte[1024];int len = -1;while((len = inputStream.read(buffer)) != -1){fos.write(buffer, 0, len);}fos.flush();fos.close();}}
修改AbstractHcAction类
//调用controller方法Method method = controllerClassInfo.getMethodMap().get(methodParam);Object invoke = null;if(ServletFileUpload.isMultipartContent(request)){MutipartFile mf = UploadFileParse.parseRequest(request);invoke = method.invoke(newInstance, request,response,mf);}else{invoke = method.invoke(newInstance, request,response);}if(invoke != null && invoke instanceof View){View view = (View)invoke;request.getRequestDispatcher(view.getPath()).forward(request, response);}
修改UserController类
@MethodMapping(method="upload")public View uploadFile(HttpServletRequest request, HttpServletResponse response,MutipartFile file) throws Exception{String parameter = file.getString("file_name");File targetFile = new File("c:/aaa.txt");file.copyToFile(targetFile);return new View("user.jsp");}
测试
需要一个jsp页面,页面上使用form表单上传一个txt文件,这里这个jsp页面的代码就不列出来了。form的action路径是
/上下文/user.hc?method=upload。
启动tomcat,浏览器输入上传jsp的地址,然后选择一个txt的文件,点击提交按钮。然后查看c盘下是不是多了一个aaa.txt
的文件。
0 0
- 从零实现MVC框架之文件上传(8)
- 从零实现MVC框架之需求篇(1)
- 从零实现MVC框架之数据库连接池(2)
- 从零实现MVC框架之实体映射(3)
- 从零实现MVC框架之AOP事务(5)
- 从零实现MVC框架之控制层(6)
- 从零实现MVC框架之总结(9)
- 从零实现MVC框架之增删改查(4)
- 从零实现MVC框架之依赖注入IOC(7)
- Spring-Mvc框架实现文件上传
- 零xml配置Spring MVC文件上传
- MVC设计之从零打造到实际操作(总汇)
- 零配置之上传文件
- 实现MVC上传文件!
- mvc框架上传文件-1
- mvc框架上传文件-2
- Spring MVC 实现文件上传
- spring MVC实现文件上传
- 不同时间类型之间的转换之SYSTEMTIME 与 time_t
- 创建磁盘阵列 --raid-devices个数为2 而只想挂载一个devices
- iOS中的RunLoop
- 程序显示cout
- ZKT指纹识别算法
- 从零实现MVC框架之文件上传(8)
- JS对象、DOM对象、Jqeury对象、Json对象 对比分析
- 当里个当,免费的HTML5连载来了《HTML5网页开发实例详解》连载(一)
- 百度百科中关于fwrite的用法说明
- tomcat设置https双向协议
- struts2中接受参数的几种方式!!!
- 零废话VS2012 MVC3项目中javascript、C#实现图片上传
- 升级linux bash
- linux内核空间和用户空间的是怎样区别的,如何交互,如何从用户空间进入内核空间