Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package br.com.roundabout;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.Statement;
- import java.util.Collection;
- import java.util.logging.Logger;
- import javax.annotation.Resource;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.MultipartConfig;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.Part;
- import javax.sql.DataSource;
- import org.apache.commons.io.IOUtils;
- @MultipartConfig
- @WebServlet(name = "MediaServlet", urlPatterns = { "/media/*", "/media" })
- public class MediaServlet extends HttpServlet {
- private static final long serialVersionUID = 135634534L;
- private static final Logger LOG = Logger.getAnonymousLogger();
- @Resource(name = "jdbc/media-ds")
- private DataSource ds;
- private void cors(HttpServletResponse res) {
- res.addHeader("Access-Control-Allow-Methods",
- "PUT, GET, POST, DELETE, OPTIONS");
- res.addHeader("Access-Control-Expose-Headers", "ItsDangerousToGoAlone");
- res.addHeader("Access-Control-Allow-Headers",
- "Content-Type, ItsDangerousToGoAlone");
- res.addHeader("Access-Control-Allow-Origin", "*");
- }
- protected void doGet(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- String path = request.getPathInfo().replace("/", "");
- LOG.info("GET " + path);
- System.out.println(path);
- try (Connection con = ds.getConnection()) {
- String q = "select mediamime,mediadata from media where mediaid = ?";
- try (PreparedStatement ps = con.prepareStatement(q)) {
- int mediaid = Integer.parseInt(path);
- ps.setInt(1, mediaid);
- try (ResultSet rs = ps.executeQuery()) {
- if (rs.next()) {
- String mime = rs.getString("mediamime");
- response.setContentType(mime);
- try (InputStream in = rs.getBinaryStream("mediadata")) {
- IOUtils.copy(in, response.getOutputStream());
- }
- }
- }
- }
- } catch (Exception e) {
- LOG.severe(e.getMessage());
- e.printStackTrace();
- response.setStatus(500);
- response.getWriter().write(e.toString());
- }
- }
- @Override
- protected void doOptions(HttpServletRequest req, HttpServletResponse res)
- throws ServletException, IOException {
- cors(res);
- LOG.info("called OPTIONS");
- res.getWriter().write("GET,POST");
- }
- protected void doPost(HttpServletRequest request,
- HttpServletResponse response) throws ServletException, IOException {
- cors(response);
- LOG.info("POST started: " + request.getContentType());
- Collection<Part> parts = request.getParts();
- for (Part part : parts) {
- long len = part.getSize();
- String name = part.getName();
- LOG.info("attepmt to upload " + name + " from "
- + request.getRemoteAddr());
- if ("file".equals(name)) {
- String mime = part.getContentType();
- try (InputStream in = part.getInputStream()) {
- String q = "insert into media (mediamime,mediadata) values (?,?)";
- try (Connection con = ds.getConnection()) {
- try (PreparedStatement ps = //
- con.prepareStatement(q, Statement.RETURN_GENERATED_KEYS)) {
- ps.setString(1, mime);
- ps.setBinaryStream(2, in, len);
- ps.executeUpdate();
- try (ResultSet rs = ps.getGeneratedKeys()) {
- if (rs.next()){
- String m = ""+rs.getInt(1);
- LOG.info("new media: "+m);
- response.getWriter().write(m);
- }
- }
- }
- } catch (Exception e) {
- LOG.severe(e.getMessage());
- e.printStackTrace();
- response.setStatus(500);
- response.getWriter().write(e.toString());
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement