내가 양식을 제출하기에 서블릿을 사용하여 postgresql 데이터베이스에 pdf 파일을 저장하는 방법은 무엇입니까?
<center><form action="pdf" method="post" enctype="multipart/form-data">
<b>Upload Certificate</b>
<input type="file" name="file"/></center>
<center> <input type="submit" /></center>
</form>
HTML
에서 파일을 업로드하고, PDF 서블릿이 호출됩니다. 서블릿 내부에서 요청 객체는 파싱되고 파일 (pdf)은 아래 코드에 주어진대로 InputStream을 사용하여 읽혀집니다.
protected void doPost(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
throws ServletException, IOException
{
try
{
List localList = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(paramHttpServletRequest);
for (FileItem localFileItem : localList)
{
String str1 = localFileItem.getFieldName();
String str2 = FilenameUtils.getName(localFileItem.getName());
System.out.println("fieldname:" + str1);
System.out.println("filename:" + str2);
InputStream localInputStream = localFileItem.getInputStream();
try
{
PdfReader localPdfReader = new PdfReader(localInputStream);
paramHttpServletResponse.sendRedirect("takedetails.jsp");
}
catch (InvalidPdfException localInvalidPdfException)
{
paramHttpServletResponse.sendRedirect("upload.jsp");
}
}
}
catch (FileUploadException localFileUploadException)
{
throw new ServletException("Cannot parse multipart request.", localFileUploadException);
}
}
필자는 InputStream 개체를 사용하여 pdf 파일 형식을 확인했습니다.
이제이 pdf 파일을 postgresql 데이터베이스에 저장하고 싶습니다. 어떤 필드를 postgresql에서 사용해야하며 어떻게 InputStream 객체의 파일을 데이터베이스에 저장할 수 있습니까?
메모리 내 바이트 []를 사용하는 대신 임시 파일을 사용하거나 메모리 버퍼에서 특정 크기 이상으로 커질 때 임시 파일로 전환하는 스마트 버퍼 클래스를 사용해보십시오. 또한, 그것은 아마도 당신을 위해 중요하지 않지만 bytea는 1GB로 제한됩니다. 큰 파일의 경우 DB 외부에 저장하고 경로와 체크섬 만 저장하십시오. –
@BalusC 고맙습니다 백만 :) 그것은 완벽한 해답이었습니다. 방금 마지막으로 작은 의심이 들었습니다. 검색하는 동안 나는 바이너리 데이터를 얻을 것이다. 그래서 파일로 변환하고 해당 pdf 파일을 표시하려면 어떻게해야합니까? – suraj
'ResultSet # getBinaryStream()'을 사용하여 DB에서 'InputStream'으로 되돌립니다. 다운로드로 제공 하시겠습니까?브라우저가 무엇을해야하는지 이해할 수 있도록 적절한 응답 헤더를 따라'HttpServletResponse # getOutputStream()'에 쓰십시오. 파일로 저장 하시겠습니까? 그냥'new FileOutputStream()'에 써주세요. 기타. 그냥 당신의 취향에 어떤'OutputStream'을 써라. http://stackoverflow.com/questions/4614935/how-to-display-a-pdf-file-in-jsp-using-servlet/4615155#4615155 – BalusC