Java Servlet实现文件上传
2012-08-23 15:44
239 查看
上传Servlet的实现代码
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String id = null; Affiche affiche = new Affiche();//自定义的一个简单javabean boolean isMultipart = ServletFileUpload.isMultipartContent(request);// 判断提交的表单是不是普通表单,不是的话就进行上传 if (isMultipart) {// 不是普通表单的话就进行上传 FileItemFactory factory = new DiskFileItemFactory();// 固定用法,创建一个FileItemFactory对象 ServletFileUpload upload = new ServletFileUpload(factory);// 固定用法,创建一个ServletFileUpload对象 Iterator<FileItem> items;// 定义一个保存所有表单数据的集合 try { items = upload.parseRequest(request).iterator();// 将表单数据全部赋值给items while (items.hasNext()) {// while循环迭代items,得到所有的表单数据 FileItem item = items.next(); if (!item.isFormField()) {// 判断此表单数据是否是file类型没事的话 就进行上传 String name = item.getName();// 得到file文件的名字 String fileName = name.substring(name.lastIndexOf('\\') + 1, name.length()); fileName = System.currentTimeMillis() + "_" + fileName;// 生成保存file的文件名,利用当前时间的毫秒值加上源文件的后缀名 String path = request.getSession().getServletContext().getRealPath("upload") + File.separatorChar + fileName;// 生成保存该文件的路径名 System.out.println(path); File uploadedFile = new File(path); item.write(uploadedFile);// 保存文件 affiche.setAfFilepath(path); } else {// 如果不是file类型的表单,那么就进行简单的赋值操作,注意这里不能再简单的用reqeuest.getParameter("")得到页面传递的表单数据,因为全部封装到items这个集合了 if ("id".equals(item.getFieldName())) { //获取非上传参数 id = item.getString("gb2312"); } if ("time".equals(item.getFieldName())) {//获取非上传参数 affiche.setAfEnabletime(parseDate(item.getString("gb2312"))); } if ("title".equals(item.getFieldName())) {//获取非上传参数 affiche.setAfTitle(item.getString("gb2312")); } if ("content".equals(item.getFieldName())) {//获取非上传参数 affiche.setAfContent(item.getString("gb2312")); } } } } catch (Exception e) { e.printStackTrace(); } } } //转换日期的小函数 private Date parseDate(String str) { SimpleDateFormat dd = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); try { date = dd.parse(str); } catch (ParseException e) { } return date; }
JSP页面实现代码
<form action="afficheManager?act=save" method="post" enctype="multipart/form-data"> <table cellspacing="0" cellpadding="1" border="1" width="70%" style="border: 1px solid #FF34B3"> <tr> <td width="10%" style="border: 1px solid #FF34B3"> 公告标题: </td> <td align="left" style="border: 1px solid #FF34B3"> <input id="title" type="text" name="title" size="50"> </td> </tr> <tr> <td width="10%" style="border: 1px solid #FF34B3"> 公告内容: </td> <td align="left" style="border: 1px solid #FF34B3"> <textarea id="content" name="content" rows="10" cols="80"></textarea> </tr> <tr> <td width="10%" style="border: 1px solid #FF34B3"> 有效时间: </td> <td align="left" style="border: 1px solid #FF34B3"> <input type="text" name="time" size="30"> (YYYY-MM-DD) </td> </tr> <tr> <td width="10%" style="border: 1px solid #FF34B3"> 相关文件: </td> <td align="left" style="border: 1px solid #FF34B3"> <input type="file" name="file" size="40" > </td> </tr> <tr> <td align="center" colspan="2" style="border: 1px solid #FF34B3"> <input type="submit" value=" 添加 "> | <input type="button" onclick="javascript:history.go(-1)" value=" 返回 "> </td> </tr> </table> </form>
Affiche JavaBean实现代码:
package com.wxl.po; import java.util.Date; public class Affiche { private int afId; private String dpId; private String afTitle; private String afContent; private Date afTime; private Date afEnabletime; private String afFilepath; //..一些get..set方法 }
相关文章推荐
- java servlet实现上传文件代码及其原理说明
- java实现文件上传下载的三种方法
- 使用cmd命令方式登录ftp实现上传下载文件数据
- 使用PHP和HTML5 FormData实现无刷新文件上传教程
- 无刷新上传文件以及类Gmail附件添加方式的实现
- Spring MVC实现文件上传
- Spring Web mvc Maven实现文件上传
- apache commons-fileupload实现进度条大文件批量上传
- Android--使用Http协议实现文件上传
- ASP.NET(C#)实现一次性上传多文件
- 实现一个Ajax模式的文件上传功能有多难?
- JAVA实现上传下载共享文件
- ASP.NET 实现文件图片上传下载处理
- 使用common-fileupload实现文件上传功能
- python tornado实现简单的文件上传功能
- javascript与asp.net实现文件上传
- iframe实现局部刷新和回调-- 文件上传
- web 开发之js---巧用iframe实现jsp无刷新上传文件
- 还不错的上传文件的Django实现
- iOS学习笔记70-使用NSURLConnection实现文件上传