html画像をデータベースにアップロードする2つの方法form方式とAjax方式


1、formによる提出:html部分:



"UTF-8">
Insert title here


	
"/UploadServlet" method="post" enctype="multipart/form-data"> "file" name="file"> "submit">

2.Ajax方式提出:1.転送するすべてのデータを1つのformにカプセル化し、1つのオブジェクトにカプセル化する.属性の設定:contentType:false,processData:false,
$("#add").click(function(){
		var username = $("#username").val();
		var age = $("#age").val();
		var data = new FormData($("#myForm")[0]);
		$.ajax({
			url:"/myWish/UploadServlet",
			async:true,
			type:"post",
			data:data,
			contentType:false,
		    processData: false,
			success:function(data){	
				if(data==1){
					layer.close(index1)
					init();		
					$("#username").val("");
					$("#age").val("");
					$("#info").val("");
					$("#createDate").val("");
					$("#myfile").val("");
				}
				else{
					layer.close(index1)
					layer.alert("    ",{icon: 2});
				}
			},
			error:function(error){
				layer.close(index1)
				layer.alert("    ",{icon: 2});
			}
		})
	})

サーブレット:
  • は、2つの変数がピクチャの名前とパスを格納し、データ伝送の方式がバイナリタイプであるか否かを判断し、そうでなければ直接返す.
  • ファイルサイズ、ファイルの合計サイズ、リスナーなど
  • を設定する.
  • requestリクエストを1つのセットに分解して開き、そのセット
  • を巡回する
  • ある要素がピクチャ/ファイルタイプである場合、まずその名前を取得し、ピクチャが格納されているフォルダを作成し、ピクチャ名に乱数を加え、入力ストリームを定義し、ピクチャ内容をストリームに読み出し(フォルダが存在するかどうかを判断することに注意)、空のファイルを作成します.
  • 出力ストリームを作成し、画像の内容をファイルに入力し、ストリームを閉じます.要素が画像でない場合、直接コンテンツ
  • を記録します.
  • コンテンツとピクチャのパスをデータベースに格納
  • import java.io.IOException;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.util.Iterator;
    import java.util.List;
    import java.util.UUID;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.commons.fileupload.FileItem;
    import org.apache.commons.fileupload.FileItemFactory;
    import org.apache.commons.fileupload.FileUploadException;
    import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    import org.apache.commons.fileupload.servlet.ServletFileUpload;
    import com.motherweb.db.MysqlUtil;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    @WebServlet("/UploadServlet")
    public class UploadServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
        public UploadServlet() {
            super();
        }
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		response.getWriter().append("Served at: ").append(request.getContextPath());
    	}
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		req.setCharacterEncoding("utf-8");
    		resp.setContentType("text/html;charset=UTF-8"); 
    		resp.setCharacterEncoding("utf-8");
    		//  
    		String myFile = "";
            //  Api
            FileItemFactory factory = new DiskFileItemFactory();
            ServletFileUpload fileUpload = new ServletFileUpload(factory);
            //     muitipart/form-data  
            if(!ServletFileUpload.isMultipartContent(req)) {
                //resp.getWriter().println("   enctype    multipart/form-data  ");
            	System.out.println("   enctype    multipart/form-data  ");
                return;
            }    
            //           8M
            fileUpload.setFileSizeMax(8*1024*1024); 
            //         (            ,       ,   60M)
            fileUpload.setSizeMax(60*1024*1024);
            //       [          ]
           // fileUpload.setProgressListener(new ListenerUploadProgress());
            //    
            try {
                List<FileItem> parseRequest = fileUpload.parseRequest(req);
                //    
                for (FileItem fileItem : parseRequest) {
                    //            form    
                    if(!fileItem.isFormField()) {
                        //    
                        String fileName = fileItem.getName();
                        InputStream fileStream = fileItem.getInputStream();
                        //        (            )
                        String parentDir = this.getServletContext().getRealPath("/upload");
                        //  UUID+      ,      
                        String realFileName = UUID.randomUUID().toString()+"-"+fileName;
                        //        
                        File file = new File(parentDir,realFileName);
                        //         
                        if(!file.getParentFile().exists()) {
                            //     [     ]file.madir        
                            file.getParentFile().mkdirs();
                        }
                        //     
                        OutputStream out = new FileOutputStream(file);
                        //      
                        byte[] buffer = new byte[1024];
                        int len = -1;
                        //    1kb(1024byte),  -1      
                        while((len = fileStream.read(buffer))!=-1) {
                            //    1kb(1024byte)
                            out.write(buffer,0, len);
                        }
                        System.out.println(parentDir);
                        System.out.println(realFileName);
                        myFile = realFileName;
                        //     
                        out.flush();
                        //   
                        out.close();
                        fileStream.close();                    
                    }else {
                        //      //   
                        String fieldName = fileItem.getFieldName();
                        //       
                        String fieldValue = fileItem.getString("UTF-8");
                        System.out.println(fieldName+":"+fieldValue);
                    }
                }
            } catch (FileUploadException e) {
                e.printStackTrace();
            } 
            resp.getWriter().print(myFile);
    	if(!myFile.equals("")) {
    	    //            
    		String sql1 = "insert into t_url(image) values(\""+myFile+"\")";
    		int flag = MysqlUtil.update(sql1);
    		resp.getWriter().print(flag);
    		}	
    	}
    }