commons-fileupload 组件上传文件到数据库和服务器

首先必须要有


两个包

后台的代码实现

package com.jss.news;

import java.io.IOException;

import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.util.Date;
import java.util.*;
import java.text.SimpleDateFormat;
import java.io.*;

import java.sql.*;
import javax.sql.*;
import javax.naming.*;

/**
 * Servlet implementation class AddNews
 */
@WebServlet("/AddNews")
public class AddNews extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddNews() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		 request.setCharacterEncoding("UTF-8");		
		 response.setContentType("text/html;charset=UTF-8");
		 
        /* String title=request.getParameter("title");
         String COLUMNID1=request.getParameter("COLUMNID1");//这里获得的是父栏目的编号
         String COLUMNID2=request.getParameter("COLUMNID2");//这里获得是子栏目的标题,表里需要存的是子栏目的编号     
         String file=request.getParameter("titlePic");    
         String  fullText=request.getParameter("full_Text");         
         String pubUserName=request.getParameter("pubUserName");
         String isPicNews=request.getParameter("isPicNews");
         if(isPicNews==null)
          {
        	 isPicNews="0";//若没有选中,则默认为0
          }  
         else
        	 isPicNews="1";         
         int ORDERENO=Integer.valueOf(request.getParameter("ORDERNO"));
         */
		    InputStream  inStream = null;//要上传到数据库就要使用它
		    String message=null;
		    String uploadPath=getServletContext().getRealPath("/")+"upload";          //定义上传文件的地址 	
		    
		    
			File folder = new File(uploadPath);
			if(!folder.exists())
				folder.mkdirs();
			String title=null;
			String COLUMNID1=null;//父栏目编号
			String COLUMNID2=null;//子栏目标题
			String  fullText=null;
			String pubUserName=null;
			String isPicNews=null;
			String ORDERENO=null;
			long size=0;
			
			
			if(ServletFileUpload.isMultipartContent(request)){  //判断是否获取的是文件
				System.out.print("okkkkk");
				DiskFileItemFactory disk=new DiskFileItemFactory();
				disk.setSizeThreshold(20*1024);                 //设置内存可存字节数
				disk.setRepository(disk.getRepository());       //设置临时文件目录
				ServletFileUpload up=new ServletFileUpload(disk);
				int maxsize=2*1024*1024;
				List list=null;
				try{
					list=up.parseRequest(request);              //获取上传列表
				}
				catch(Exception e){
					e.printStackTrace();
				}
				Iterator i=list.iterator();                     //创建列表的迭代器
				while(i.hasNext()){
					FileItem fm=(FileItem)i.next();             //遍历列表
					size=fm.getSize();
					if(!fm.isFormField()){
						String filePath = fm.getName();	//获取文件全路径名
						String fileName="";
						int startIndex = filePath.lastIndexOf("\\");
						if(startIndex!=-1){						//对文件名进行截取
							fileName = filePath.substring(startIndex+1);
						}else{
							fileName=filePath;
						}
						if(fm.getSize()>maxsize){
							message="文件太大了,不要超过2MB";
							System.out.print(message);
							break;
						}
						String fileSize=new Long(fm.getSize()).toString();
						if((fileName==null)||(fileName.equals(""))&&(fileSize.equals("0"))){
							message="文件名不能为空,文件大小也不能为零!";
							System.out.print(message);
							break;
						}
						File saveFile=new File(uploadPath,fileName);
						
						try{
							fm.write(saveFile);                //向文件中写入数据
							message="文件上传成功!";
							System.out.print(message);
						}
						catch(Exception e1){
							e1.printStackTrace();
						}
						
						inStream=fm.getInputStream();
					}
					else{
						String foename=fm.getFieldName();     //获取表单元素名
						String con=fm.getString("UTF-8");       //获取表单内容,注意编码方式
						//表单元素
						if(foename.equals("title")){
							title = con;
							System.out.println("ok1");
						}
						else if(foename.equals("COLUMNID1")){
							 COLUMNID1 = con;
							 System.out.println("ok2");
						}
						else if(foename.equals("COLUMNID2"))
						 {
							 COLUMNID2 = con;
							 System.out.println("ok3");
						 }
						else if(foename.equals("full_Text"))
						 {
							 fullText= con;
							 System.out.println("ok4");
						 }
						else if(foename.equals("pubUserName"))
						 {
							 pubUserName=con;
							 System.out.println("ok5");
						 }														
						else if(foename.equals("isPicNews"))
						 {
							 isPicNews=con;
							 if(isPicNews==null)
							 {
								 isPicNews="0";
							 }
							 else
							 {
								 isPicNews="1";
							 }
							 System.out.println("ok6");
						 }
						else if(foename.equals("ORDERNO"))
						 {
							 ORDERENO=con;
							 System.out.println("ok7");
						 }
						
						
					}
				}
			}
			else
			{
		        System.out.print("no");//表明form中没有文件,所以用一般的方法处理就好了
		         title=request.getParameter("title");
		         COLUMNID1=request.getParameter("COLUMNID1");//这里获得的是父栏目的编号
		          COLUMNID2=request.getParameter("COLUMNID2");//这里获得是子栏目的标题,表里需要存的是子栏目的编号     
		       //  String file=request.getParameter("titlePic");    
		          fullText=request.getParameter("full_Text");         
		          pubUserName=request.getParameter("pubUserName");
		          isPicNews=request.getParameter("isPicNews");
		         if(isPicNews==null)
		          {
		        	 isPicNews="0";//若没有选中,则默认为0
		          }  
		         else
		        	 isPicNews="1";         
		          ORDERENO=request.getParameter("ORDERNO");
		         
			}
			  						
   
      try{      	 
        	 Context cxt=new InitialContext();
			 DataSource ds = (DataSource)cxt.lookup("java:/comp/env/jdbc/mysql");
			 Connection conn=ds.getConnection();
		    
		     String sql="insert into yw_news(title,COLUMNID,pubTime,ORDERNO,pubUserName,isPicNews,full_Text,titlePic) values(?,?,?,?,?,?,?,?)";
		 //    String sql2="select COLUMNID from yw_news_column where TITLE=? and FATHERID in(select COLUMNID from yw_news_column where TITLE=?)";
		    
		//	 String sql="insert into yw_news(title,COLUMNID,pubTime,ORDERNO,pubUserName,isPicNews,full_Text) values(?,?,?,?,?,?,?)";
			 String sql2="select COLUMNID from yw_news_column where TITLE=? and FATHERID=?";		     
		     PreparedStatement ps=conn.prepareStatement(sql);
		     PreparedStatement ps2=conn.prepareStatement(sql2);	
		      
		    
		     
		     ps2.setString(1, COLUMNID2);
		     ps2.setString(2, COLUMNID1);		     
		     ResultSet rs=ps2.executeQuery();		     
		     ps.setString(1, title);
		
		     while(rs.next())
		     {
		    	 ps.setInt(2, rs.getInt("COLUMNID"));//二级栏目的编号
		     }
		     ps.setTimestamp(3,new Timestamp(new Date().getTime()));
		     ps.setString(4, ORDERENO);
		  //   ps.setInt(4, Integer.parseInt(ORDERENO));
		     ps.setString(5, pubUserName);
		     ps.setString(6,  isPicNews);
		  //  ps.setInt(6,  Integer.parseInt(isPicNews));
		     ps.setString(7, fullText);	
		  //   FileInputStream str=new FileInputStream(uploadPath);
		     ps.setBinaryStream(8,inStream,size); 
		     ps.executeUpdate();		     
		     rs.close();
		     ps.close();
		     ps2.close();
		     conn.close();		     		     		        		  
         }                 
         catch(Exception e){
			   e.printStackTrace();
		   }
	 
	         request.getRequestDispatcher("addNews.jsp").forward(request, response);
	}
	
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
	}

}
API:

http://commons.apache.org/proper/commons-fileupload/apidocs/index.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值