文件上传的解决方案总结暨CSV文件解析

本文介绍使用Apache Commons FileUpload组件进行文件上传的方法,包括处理multipart/form-data表单数据、解析请求流及读取CSV文件等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件上传的解决方案总结

网上主要有两种可用的参考组件,

第一种是用jspSmartUpload组件,参考资料:http://www.zhuoda.org/lunzi/20971.html

第二种是用Apache组织的commons项目中的FileUpload组件,参考资料http://www.blogjava.net/lushengdi/archive/2009/01/09/227063.html

 

今天介绍第二种方案中的文件上传,文件下载功能则可细想而知。

第二种方案中文件上传,其实就是将request对象中的inputStream解析出来,并获取文件的信息流,将文件信息流存储到服务器上。

 

举个例子:以下视图包括了一个文件上传的form表单

Form表单中是这样描述的:

<form name="contact_addPatch" enctype="MULTIPART/FORM-DATA" method=post>

……

</form>

注意enctype值需要写成MULTIPART/FORM-DATA

当点击确定之后,提交给了一个servlet来处理,servlet则在request对象中分析这个inputstream流文件,

FileItemFactory factory = new DiskFileItemFactory();

       ServletFileUpload upload = new ServletFileUpload(factory);

       List items = null;

       try {

           items = upload.parseRequest(request);

       } catch (FileUploadException e1) {

           e1.printStackTrace();

       }

       Iterator iter = items.iterator();

      

       //获取form表单里面的信息

       while (iter.hasNext()) {

           FileItem item = (FileItem) iter.next();

           if (item.isFormField()) {

              String fieldName = item.getFieldName();

           String fieldValue = item.getString(ENCODING);

              if (fieldName.equals("ins_id2")) {

                  request.setAttribute("ins_id2", fieldValue);    

              }

           }

           else {

           InputStreamReader inputStreamReader = new InputStreamReader (item.getInputStream());

           ……

           }

       }

这就是整个分析的过程,inputStreamReader对象则可以按行读取,也可以写到磁盘上。

 

此例中还有一个亮点,读取csv文件。其实csv文件就是一个txt文件形式。它只不过是将文本信息通过逗号分割起来了。所以,只要按照“,”来分取csv文件中的信息,则可以读取成功。

 

信息字段的校验可以通过java.util.regex.Pattern;来实现,至于Pattern如何使用,敬请参考sunjava手册。

 

附件中的一个例子,就是从客户端获取csv文件,并读取里面的首列的。

 

 

参考资料:

http://www.knowsky.com/4257.html

http://www.zhuoda.org/lunzi/20971.html

http://www.blogjava.net/lushengdi/archive/2009/01/09/227063.html

http://www.ymjc.com.cn/development/p344/J34442370.shtml

http://www.diybl.com/course/3_program/java/javashl/2008520/117162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机场信息系统研究员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值