怎样用servlet实现文件上传,并将路径插入到数据库中

解决方案 »

  1.   

    先导入commons-fileupload.jar和commons-iojar包。
    前台jsp代码:
    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      
      <body>
        <form action="fileupLoadServlet" method="post" enctype="multipart/form-data">
         文件上传<input type="file" name="up">
         <input type="submit" value="提交">
        </form>
      </body>
    </html>
    后台servlet代码:import java.util.List;import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    public class FileUpLoadServlet extends HttpServlet{ public void service(ServletRequest arg0, ServletResponse arg1)
    throws ServletException, IOException {
    HttpServletRequest request = (HttpServletRequest)arg0;
    System.out.println(request.getContentType());
    System.out.println(request.getContentLength());
    HttpServletResponse response = (HttpServletResponse)arg1;
    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload fileUpload = new ServletFileUpload(factory);
    OutputStream outputStream = null;
    InputStream inputStream = null;
    try {
    List items = fileUpload.parseRequest(request);
    for (Iterator iterator = items.iterator(); iterator.hasNext();) {
    FileItem name = (FileItem) iterator.next();
    if(!name.isFormField()){
    String fieldName  = name.getFieldName();
    String fileName = name.getName();
                                            String lastFileName = request.getRealPat("/")
    + System.currentTimeMillis()
    + fileName.substring(fileName.lastIndexOf("."), outputStream = new FileOutputStream(new File(lastFileName ),
    fileName.length())));
    inputStream = name.getInputStream();
    byte[] bs = new byte[1024];
    int length = 0;
    while(null != inputStream && (length = inputStream.read(bs))!=-1){
    outputStream.write(bs);
    }
    }
                                   //把lastFileName存到数据库(这里就不写了不只lz用的什么方式)
    }
    } catch (Exception e) {
    // TODO: handle exception
    }finally{
    inputStream.close();
    outputStream.flush();
    outputStream.close();
    }
    }

    }
      

  2.   

    2楼的都说了使用apache jakatra中的 commons-fileupload.jar和commons-io.jar 可以解决你的问题
      

  3.   

    到网上有很多文件上传方法,下一个就得了,插入数据数据库就更容易,写个数据插入dao就搞定了