Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- enter code here
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.sql.Blob;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import javax.servlet.ServletContext;
- 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("/downloadFileServlet")
- public class DBFileDownloadServlet extends HttpServlet {
- // size of byte buffer to send file
- private static final int BUFFER_SIZE = 4096;
- // database connection settings
- private String dbURL = "jdbc:mysql://localhost:3306/test";
- private String dbUser = "root";
- private String dbPass = "secret";
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- // get upload id from URL's parameters
- int uploadId = Integer.parseInt(request.getParameter("id"));
- Connection conn = null; // connection to the database
- try {
- // connects to the database
- DriverManager.registerDriver(new com.mysql.jdbc.Driver());
- conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","ROOT");
- // queries the database
- String sql = "SELECT * FROM files_upload WHERE upload_id = ?";
- PreparedStatement statement = conn.prepareStatement(sql);
- statement.setInt(1, uploadId);
- ResultSet result = statement.executeQuery();
- if (result.next()) {
- // gets file name and file blob data
- String fileName = result.getString("file_name");
- Blob blob = result.getBlob("file_data");
- InputStream inputStream = blob.getBinaryStream();
- int fileLength = inputStream.available();
- System.out.println("fileLength = " + fileLength);
- ServletContext context = getServletContext();
- // sets MIME type for the file download
- String mimeType = context.getMimeType(fileName);
- if (mimeType == null) {
- mimeType = "application/octet-stream";
- }
- // set content properties and header attributes for the response
- response.setContentType(mimeType);
- response.setContentLength(fileLength);
- String headerKey = "Content-Disposition";
- String headerValue = String.format("attachment; filename="%s"", fileName);
- response.setHeader(headerKey, headerValue);
- // writes the file to the client
- OutputStream outStream = response.getOutputStream();
- byte[] buffer = new byte[BUFFER_SIZE];
- int bytesRead = -1;
- while ((bytesRead = inputStream.read(buffer)) != -1) {
- outStream.write(buffer, 0, bytesRead);
- }
- inputStream.close();
- outStream.close();
- } else {
- // no file found
- response.getWriter().print("File not found for the id: " + uploadId);
- }
- } catch (SQLException ex) {
- ex.printStackTrace();
- response.getWriter().print("SQL Error: " + ex.getMessage());
- } catch (IOException ex) {
- ex.printStackTrace();
- response.getWriter().print("IO Error: " + ex.getMessage());
- } finally {
- if (conn != null) {
- // closes the database connection
- try {
- conn.close();
- } catch (SQLException ex) {
- ex.printStackTrace();
- }
- }
- }
- }
- SEVERE: Servlet.service() for servlet [Download] in context with path [/Download111] threw exception
- java.lang.NumberFormatException: null
- at java.lang.Integer.parseInt(Unknown Source)
- at java.lang.Integer.parseInt(Unknown Source)
- at Download.doGet(Download.java:42)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
- at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
- at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
- at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
- at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
- at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
- at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
- at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
- at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
- at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
- at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
- at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
- at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
- at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
- at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
- at java.lang.Thread.run(Unknown Source)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement