`
weideming
  • 浏览: 1212 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

org.apache.commons.fileupload 文件上传至数据库

阅读更多

package cn.com.capture.service.rest.resource.upload.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
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.restlet.representation.Representation;

import cn.com.capture.common.db.BaseDO;
import cn.com.capture.service.rest.resource.base.BaseAuthResource;
import cn.com.capture.service.rest.resource.upload.FileUpload;

public class FileUploadImpl extends BaseAuthResource implements FileUpload {

 @Override
 public Representation doFileUpload(Representation resp) {
   executeUpload(httpServletRequest);
  return null;
 }

 /**
  * 处理上传文件
  *
  * @param request
  * @throws UnsupportedEncodingException
  */
 public void executeUpload(HttpServletRequest request) {
//  request.setCharacterEncoding("UTF-8");
  String gps_x = "123.122323";
  String gps_y = "123.122323";
  String user = "capture";
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);
  if (isMultipart == true) {
   try {
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setHeaderEncoding("iso8859-1");
    List<FileItem> fileItems = upload.parseRequest(request); // 得到所有的表单域,它们目前都被当作FileItem
    String uploadPath = "d:\\upload\\";
    File file = new File(uploadPath);
    if (!file.exists()) { // 如果没有此目录就创建此目录
     file.mkdir();
    }
    int faultid = 0;
    Iterator<FileItem> iter = fileItems.iterator();
    while (iter.hasNext()) { // 依次处理每个表单域
     FileItem item = (FileItem) iter.next();
     if (item.isFormField()) { // 如果item是正常的表单域
      String faultremark = new String(item.getString().getBytes("iso8859-1"),"utf-8"); //中文编码
//      System.out.println("故障描述:   "+faultremark);
      //设置相同描述信息 并返回id 给以其附件信息id
      faultid = setFaultPointInfo(faultremark,gps_x,gps_y,user);
     } else {  // 如果item是文件上传表单域
      String filename = item.getName();
      //new String(item.getName().getBytes("iso8859-1"),"utf-8");  //得到文件名
       String filetype = filename.substring(filename.lastIndexOf("."),filename.length()); //文件后缀
      InputStream is = item.getInputStream(); //此处已经得到上传文件的输入流
      String filepath = uploadPath +filename;  //此处的filename可以改名存储
      if (new File(filepath).exists()) { // 上传文件是否存在
       new File(filepath).delete(); // 存在就删除
      }
      if (!filepath.equals("")) { // 如果文件名不为空
       FileOutputStream fos = new FileOutputStream(filepath);
       byte[] buffer = new byte[10240];
       int count = 0;
       while ((count = is.read(buffer)) > 0) {
        fos.write(buffer, 0, count); // 开始上传至目录文件
       }
       fos.close();
       is.close();
       FileInputStream inStream = new FileInputStream(new File(filepath)); //根据文件路径得到其输入流
       writeMedia(faultid, inStream, filepath,filetype); // 根据文件照片信息写入数据库
       System.out.println("文件上传成功");
      }
     }
    }
//    readMedia("andiioreUser");
    System.out.println("取出文件成功");
   } catch (Exception e) {
    e.printStackTrace();
   }
  } else {
   System.out.println("请求表单类型不对。。。。the enctype must be multipart/form-data");
  }
 }

 /**
  * 设置某个故障点信息 并返回表记录id
  *
  * @return
  */
 public int setFaultPointInfo(String remarks, String gps_x, String gps_y,
   String username) {
  String inserSql = "insert into C_WEB_FAULTPONTINFO(REMARK,GPS_X,GPS_Y,USERNAME) values('"
    + remarks
    + "','"
    + gps_x
    + "','"
    + gps_y
    + "','"
    + username
    + "')";
  BaseDO.getInstance().executeUpdate(inserSql);
  return BaseDO.getInstance().getTableRecord("C_WEB_FAULTPONTINFO_ID",
    "C_WEB_FAULTPONTINFO");
 }

 /**
  * 根据故障点信息设置故障点的各种媒体信息
  *
  * @return
  */
 public boolean writeMedia(int faultid, FileInputStream inStream,
   String faultpath, String faultinfo) {
  boolean flag = false;
  String sql = "insert into C_WEB_FAULTMEDIA(C_WEB_FAULTPONTINFO_ID,FAULTMEDIAFILE,FAULTMEDIAPATH,FAULTINFO) values(?,?,?,?)";
  BaseDO bd = BaseDO.getInstance();
  Connection conn = bd.getConnection();
  PreparedStatement pstmt = null;
  try {
   pstmt = conn.prepareStatement(sql);
   pstmt.setInt(1, faultid);
   pstmt.setBinaryStream(2, inStream, inStream.available()); // 字符流写入数据库
   pstmt.setString(3, faultpath);
   pstmt.setString(4, faultinfo);
   pstmt.executeUpdate(); // 执行插入操作
   inStream.close();
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   bd.close(pstmt, conn);
  }
  return flag;
 }

 /**
  * 根据用户名读取该用户上传的媒体文件
  * @param username
  * @return
  */
 public String readMedia(String username) {
  String sql = "select FAULTMEDIAPATH,FAULTMEDIAFILE from C_WEB_FAULTMEDIA a,C_WEB_FAULTPONTINFO b where A.C_WEB_FAULTPONTINFO_ID (+)= B.C_WEB_FAULTPONTINFO_ID"
    + " and B.USERNAME = '"+username+"'";
  BaseDO bd = BaseDO.getInstance();
  Connection conn = bd.getConnection();
  PreparedStatement pstmt = null;
  ResultSet rs = null;
  try {
   pstmt = conn.prepareStatement(sql);
   rs = pstmt.executeQuery();
   while(rs.next()){
    FileOutputStream outStream = new FileOutputStream(rs.getString("FAULTMEDIAPATH")); //rs.getString("FAULTMEDIAPATH")
    InputStream inStream = rs.getBinaryStream("FAULTMEDIAFILE"); //得到数据库存放媒体文件的值
    byte[] buf = new byte[10240];
    int len;
    while ((len = inStream.read(buf)) > 0) {
     outStream.write(buf, 0, len);
    }
    inStream.close();
    outStream.close();
   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   bd.close(rs, pstmt, conn);
  }
  return null;
 }
}

分享到:
评论

相关推荐

    commons.fileupload和jspSmartUpload文件上传和ExtJS前后台原代码

    1、利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,前台代码是Jsp,后台是用servlet处理,共2个例子,各有不同,比较使用; 2、有用jspSmartupload制作一个文件上传和下载的例子,其制作...

    commons-fileupload-1.2.jar和commons-io-1.3.2.jar

    // 在下文中上传文件至数据库时,将对这里改写 item.write(new File("d:\\" + m.group(1))); out.print(name+"&nbsp;&nbsp;"+size+" "); } catch (Exception e) { out.println(e); } } else { throw ...

    commons.fileupload和jspSmartUpload文件上传前后台原代码

    利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,共两个例子,个有不同,费用使用。另有用jspSmartupload制作一个文件上传和下载的例子,其制作的例子能够上传到数据库中。

    commons-fileupload-1.0-beta-1.jar、commons-beanutils-1.8.3.jar

    Commons是Apache开放源代码组织中的一个Java子项目,该项目主要涉及一些开发中常用的模块,例如文件上传、命令行处理、数据库连接池、XML配置文件处理等。这些项目集合了来自世界各地软件工程师的心血,其性能、稳定...

    apache-commons源码及jar文件

    FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 Jelly Jelly是一个基于 ...

    commons-fileupload

    前几天搞文件上传, Google到了Apache 的 commons-fileupload-1.2.jar 上传组件, 研究了API然后结合Hibernate实现了上传图片 并保存到MySQL数据库. 今天重新写了一遍, 由于不需要保存到数据库了, 就实现了保存成...

    班级信息管理系统源码

    5.将mysql-connector-java-5.0.5-bin.jar、commons-fileupload-1.2.1.jar、commons-fileupload.jar、commons-io-1.3.1.jar文件拷贝至..\Apache Software Foundation\Tomcat 5.5\shared\lib\目录下。 6.启动TOMCAT...

    Java文件上传前后台原代码

    1、利用org.apache.commons.fileupload编写的文件上传和下载的前台和后台代码,共两个例子,各有不同,非常使用。 2、另有用jspSmartupload制作一个文件上传和下载的例子,其制作的例子能够上传到数据库中。 3、注意...

    Java开发常用jar包

    7.commons-FileUpload.jar包:支持文件上传。 8.commons-Codec.jar包:处理常用的编码方法的工具类包 例如DES、SHA1、MD5、Base64等. 9.commons-Configuration.jar:一个java应用程序的配置管理类库 10.commons-...

    SpringMVC上传文件,用poi通过excel批量添加数据,向数据库中添加对象,对象涉及日期格式,Boolean格式提供思路

    commons-fileupload commons-fileupload 1.3.2 org.apache.poi poi-ooxml 3.17 org.apache.poi poi 3.17 commons-fileupload commons-fileupload 1.3.2 commons-io commons-io 2.4

    基于SpringMVC+Hibernate4的考勤管理系统+.zip

    Apache fileupload 文件上传组件 Apache commons-collections 封装好的各种集合类和集合工具类 Apache commons-io Apache基金会创建并维护的Java函数库 Apache commons-logging 通用的日志接口 dom4j 优秀的JavaXML ...

    Java版水果管理系统源码-xqoo-cloud-admin:xqoo-cloud-admin

    Java版水果管理系统源码 #XQOO-CLOUD 后台管理系统 ##1.0版本 系统搭建数据库建表脚本在根目录scripts下,部分...commons-fileupload文件上传工具 rg.jsoup HTML解析器 org.apache.poi 表格文件处理 org.apache.veloc

    web开发常用jar

    Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar ...

    JSF文件上传

    &lt;%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="x"%&gt; Faces-config.xml文件如下: &lt;managed-bean-name&gt;myBean fileupload.MyBean &lt;managed-bean-scope&gt;request MyBean如下: ...

    java开发常用jar包

    Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar 是一...

    MyEclipse_9创建SSH2开发环境必须的独立包

    commons-fileupload.jar 文件上传 commons-io.jar 输入输出,支持文件上传 commons-logging.jar 用于通用日志处理 commons-validator.jar 提供了一个简单的,可扩展的框架来在一个XML文件中定义校验器(校验方法)和...

    心之语许愿墙 v1.0.zip

    fileupload.jar、commons-logging.jar、commons-validator.jar、jakarta-oro.jar、jsf-api.jar、jsf-impl.jar、jstl-1.2.jar、jstl.jar、standard.jar、struts.jar)和SQL Server 2008数据库驱动包(sqljdbc4)拷贝...

    用户注册和登录是每个系统的必须存在的一部分,基于Dwr+Struts2+Spring+Hibernate写了一个用户登录注册系统

    13. //如果不用此包,在启动时抛出:nested exception is java.lang.NoClassDefFoundError: org/apache/commons/collections/SequencedHashMap 14. commons-collections-3.1.jar 15. 16. //这个似乎可以不用的 ...

Global site tag (gtag.js) - Google Analytics