首先必须要有
两个包
后台的代码实现
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