2017-06-16 88 views
1

我有一個用JSP編寫的Web項目,後端有一些Java類。我想製作一個用戶上傳圖片的頁面,並將其保存在數據庫中。如何製作一個JSP頁面將圖像上傳到MySQL數據庫?

我有一個頁面,用戶上傳的圖像,用這樣的形式:

<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文件這個圖像保存到LONGBLOB對象在MySQL數據庫中。我嘗試過使用request.getParameter()和request.getPart(),但它們都返回null,並且任何試圖使用這些結果的NullPointerException。

我試過在線尋找,但所有的解決方案都涉及到使用servlet而不是JSP頁面。是的,我知道使用JSP並不是最佳實踐,但爲了這個項目的目的,這是我必須使用的。

+0

你真的不想直接在你的MySQL數據庫存儲的圖像之前。保存圖像的路徑並在需要時加載圖像會更好。 – FMashiro

+0

否則我會在哪裏存儲圖像?我在網上看到過多個答案,但我不知道有任何其他方式。 –

+0

http://www.codejava.net/coding/upload-files-to-database-servlet-jsp-mysql這也許是 – Maj

回答

0

您必須使用

部P = request.getpart( 「文件」);

inputstream is = p.getinputstream(p);

byte [] b = Ioutils.getBytes(is);

那麼你可以使用Setbytes存儲在MySQL

而且你還宣佈對你的servlet的多註解類名

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

相關問題