2017-06-16 11 views
1

私はバックエンド用のいくつかのJavaクラスを使ってJSPで書かれたWebプロジェクトを持っています。ユーザーが画像をアップロードしてデータベースに保存するページを作りたいと思っています。イメージをMySQLデータベースにアップロードするJSPページを作成するにはどうすればよいですか?

私はこのような形で、ユーザーが画像をアップロードページがあります。

<form action="UploadImage.jsp" method="post" enctype="multipart/form-data"> 
<input type="file" name="file" accept="image/*"> 
<input type="submit" name="submit" value="Upload Image"> 

私はUploadImage.jspファイルは、MySQLデータベース内LONGBLOBオブジェクトにこの画像を保存したいです。私はrequest.getParameter()とrequest.getPart()を使用してみましたが、両方ともnullを返し、NullPointerExceptionでこれらの結果を使用しようとしました。

私はオンラインで見てみましたが、すべてのソリューションではJSPページの代わりにサーブレットを使用しています。そして、はい、私はJSPを使用するのがベストプラクティスではないことを知っていますが、このプロジェクトの目的のためには、私が使用する必要があります。

+0

前に、サーブレットのマルチパートの注釈を宣言しました。イメージへのパスを保存し、必要なときにイメージをロードするほうがはるかに優れています。 – FMashiro

+0

イメージを保存する場所はどこですか?私はこれを言って複数の答えをオンラインで見てきましたが、私はこれを行う他の方法の考えがありません。 –

+0

http://www.codejava.net/coding/upload-files-to-database-servlet-jsp-mysqlおそらく – Maj

答えて

0

あなたは

部分p = request.getpart( "ファイル")を使用する必要があります。

inputstreamは= p.getinputstream(p)です。

バイト[] b = Ioutils.getBytes(is);

は、あなたは、MySQL

に保存されているにSetbytesを使用することができます。また、クラス名あなたが本当にあなたのMySQLデータベースに直接画像を保存したくない

0

ServletFileUploadクラスを使用すると、リクエストを解析し、複数のファイル(場合によってはイメージ)をサーバーの一時ディレクトリにアップロードできます。次に、ファイルの場所をデータベースのパスとして保存するだけです。

ServletContext context = pageContext.getServletContext();  
String filePath = "c:\\apache-tomcat\\webapps\\images\\"; 

DiskFileItemFactory factory = new DiskFileItemFactory();  
factory.setRepository(new File("c:\\temp")); 
ServletFileUpload uploader = new ServletFileUpload(factory); 

try { 
    List files = upload.parseRequest(request); 
    Iterator<FileItem> iter = fileItems.iterator(); 

    while (iter.hasNext()) { 
     FileItem file = iter.next();    
     File serverFile = new File(filePath + 
      file.getName().substring(fileName.lastIndexOf("\\")));    
     file.write(serverFile); 
    } 
} catch(Exception ex) { 
    System.out.println(ex); 
} 
+0

まだテストしていません!しかし、それがどのように機能するかを実証するだけです。 – Mayron

関連する問題