Javaweb文件上传到sqlServer数据库

 jsp页面:

 <form action="Upload" method="post" name="myform" enctype="multipart/form-data" >
         
             <p>  用户:<input type="text" name="username" /></p>
                       
           
             <p>  密码:<input type="text" name="password"/></p>
                                                   
                            
            <p>  头像: <input type="file" name="image" />  </p>
                                                 
                         

          这里开始你的描述:

         <textarea name="content" style="width:500px;height:300px;margin:0 auto;">

          </textarea>
          <br/>
        
              <input type="submit" value="提交">

   </form>

Servlet页面(Upload.java):

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.io.FileOutputStream;

import java.io.InputStream;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

importorg.apache.commons.fileupload.servlet.ServletFileUpload;

import org.apache.commons.io.FilenameUtils;

import java.util.List;

import java.util.UUID;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import model.DatabaseBean;

 

publicclass Upload extends HttpServlet{

   privatestaticfinallongserialVersionUID = 1L;

   protectedvoid doGet(HttpServletRequest request, HttpServletResponseresponse)

        throws ServletException, IOException {

       response.setContentType("text/html;charset=UTF-8");

        request.setCharacterEncoding("utf-8");

        PrintWriter out=response.getWriter();

        String sql="insert into person(username,password,img)  values(?,?,?)";

        String driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String url="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=Sweet";
        String username="sa";
String password="123456";
Class.forName(driverClass);
        Connection conn=DriverManager.getConnection(url, username, password);

        PreparedStatement pstmt = conn.prepareStatement(sql);

       

         

        try{

            DiskFileItemFactory diskFactory = new DiskFileItemFactory(); //创建FileItem 对象的工厂

            ServletFileUpload upload = new ServletFileUpload(diskFactory);//处理上传的文件数据,并将表单中每个输入项封装成一个FileItem 对象中

            diskFactory.setRepository(new File("f:\\"));

            upload.setHeaderEncoding("UTF-8");//设置编码格式

                // 设置允许上传的最大文件大小 4M 

             upload.setSizeMax(4 * 1024 *1024);         

       

              List<FileItem> fileItems =upload.parseRequest(request);//解析请求,将表单中每个输入项封装成一个FileItem对象 

             for(intfi=0;fi<fileItems.size();fi++){                   //判断输入的类型是普通输入项还是文件

                if (!fileItems.get(fi).isFormField()){                 //是文件

                  

                    InputStream in =fileItems.get(fi).getInputStream();

 

                        

                    StringdirectoryRealPath=request.getSession().getServletContext().getRealPath("/")+"upload/";

                    System.out.println(directoryRealPath);

                    File storeDirectory = new File(directoryRealPath);// 即代表文件又代表目录

                        if (!storeDirectory.exists()) {

                            storeDirectory.mkdirs();// 创建一个指定的目录

                        }

                        // 得到上传的名子

                        String filename =fileItems.get(fi).getName();

                        if (filename != null) {

                            filename = FilenameUtils.getName(filename);// 获取文件名称

                        }

 

                        // 解决文件同名的问题

                        filename = UUID.randomUUID() + "_" + filename;                    

 

                        // 上传文件,自动删除临时文件

                        File file = new File(storeDirectory, File.separator + filename); // 绝对目录/日期目录/文件名

                        FileOutputStream fo = new FileOutputStream(file);

 

                        int len = 0;

                        byte[] b = newbyte[1024];

                        while ((len = in.read(b)) != -1) {

                            fo.write(b, 0, len);

                        }

                        //关闭流

                        fo.close();

                        in.close();

                        pstmt.setString(3,filename );               

                        fileItems.get(fi).delete();

                        

                  

                        }              //删除文件不留         

 

                else{                                                 //普通输入项

                   Strings=fileItems.get(fi).getString("utf-8");

                   switch(fi){

                      case0:pstmt.setString(1,s ); break;

                      case1:pstmt.setString(2,s );break;

                      default:out.println("Error");

                      

                   }

                    

                }

               

              }

             pstmt.executeUpdate();

             out.print("<script charset='UTF-8'language='javascript' type='text/javascript'>" +

                 " alert('上传成功');window.location.href='upload.jsp'</script>");

           

       } catch(FileUploadException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

      }catch (SQLException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

      }catch (Exception e) {

        e.printStackTrace();

      }finally{    

       

               DatabaseBean.closeStmt(pstmt);

               DatabaseBean.closeConn(conn);

                        

           }

     

       

     

   }

 

   protectedvoid doPost(HttpServletRequest request, HttpServletResponseresponse)

        throws ServletException, IOException {

     

           doGet(request, response);

   }


猜你喜欢

转载自blog.csdn.net/xiaomiao3/article/details/80038336