java web个人开发笔记:文件上传
文件上传
页面一般采用:
一般可以获取文件名 但一般都不能获取路径 (可以的话,直接自己读流),所以很多组件做了封装,如apache:
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List items = upload.parseRequest(request);
但这个课能在sevlet管用 ,但在striuts action中一般List items = upload.parseRequest(request); 获取为空,因为在struts拦截器中对request进行了封装,实际上它的request为MultiPartRequest
不过
struts在apatch进行了封装,有它自己的组件需要导入包commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar,后面的那个包是因为在下
面的代码中会使用到它里面的一些方法,实际上也可以不加入,这些包都是可以在Struts的lib文件夹里面找到的.然后就是写Action类了,
这里需要接收文件(File类型),文件名,文件类型,文件名必须和表单里面的name属性名一致,学过servlet的都知道为什么,然后文件名
的写法是文件名+FileName,然后文件类型名称的写法是文件名+ContentType,分别把他们设置成属性,就是分别为他们提供set和get方
法。接着需要把接受到的File文件转存到服务器的目录里,否则它就存放在Struts的临时目录里面,在Action执行完毕后会被删除。
private File log;
private String logFileName;
private String logContentType;
set/get...
String path="E:\\temp";
if(log!=null)
{
File savefile = new File(new File(path),logFileName);
if(!savefile.getParentFile().exists())
{
savefile.getParentFile().mkdirs();
}
try {
FileUtils.copyFile(log, savefile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
本文来源 我爱IT技术网 http://www.52ij.com/jishu/5311.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
