Fixed static folder thumbnails

This commit is contained in:
Ziver Koc 2018-11-03 23:32:13 +01:00
parent c7747293c5
commit eafb34d2c2
6 changed files with 57 additions and 27 deletions

View file

@ -5,6 +5,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.SQLException;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
@ -15,12 +16,17 @@ import org.apache.commons.fileupload.util.Streams;
import zall.Zallery;
import zall.ZalleryServlet;
import zall.bean.Folder;
import zall.bean.Image;
import zall.bean.Media;
import zall.bean.Video;
import zall.manager.ResourceManager;
import zutil.MimeTypeUtil;
import zutil.db.DBConnection;
import zutil.io.file.FileUtil;
import zutil.log.LogUtil;
import static zall.page.ContentServlet.URI_FOLDER;
import static zall.page.ContentServlet.URI_IMAGE;
import static zall.page.ContentServlet.URI_VIDEO;
@ -28,26 +34,32 @@ import static zall.page.ContentServlet.URI_VIDEO;
/**
* A headless page that provides media content.
*/
@WebServlet({URI_IMAGE, URI_VIDEO})
@WebServlet({URI_IMAGE, URI_VIDEO, URI_FOLDER})
public class ContentServlet extends ZalleryServlet {
private static final long serialVersionUID = 1L;
private static Logger logger = LogUtil.getLogger();
public static final String URI_IMAGE = "/image";
public static final String URI_VIDEO = "/video";
public static final String URI_FOLDER = "/folder";
public static final String URI_IMAGE = "/image";
public static final String URI_VIDEO = "/video";
public void doGet(HttpServletRequest request, HttpServletResponse response, DBConnection db) throws ServletException, SQLException, IOException {
Media media = null;
String contentType = "";
File file = null;
String extension = null;
switch (request.getServletPath()){
case "/video":
media = Video.load(db, Integer.parseInt(request.getParameter("id")));
contentType = "video";
case URI_FOLDER:
file = new File(getServletContext().getRealPath("img/folder.png"));
break;
case "/image":
case URI_IMAGE:
media = Image.load(db, Integer.parseInt(request.getParameter("id")));
contentType = "image";
break;
case URI_VIDEO:
media = Video.load(db, Integer.parseInt(request.getParameter("id")));
break;
}
@ -56,23 +68,25 @@ public class ContentServlet extends ZalleryServlet {
if (request.getParameter("size") != null)
size = Media.Size.valueOf(request.getParameter("size").toUpperCase());
File file = media.getFile(size);
String extension = media.getFileExtension(size);
file = media.getFile(size);
extension = media.getFileExtension(size);
}
if (file != null && file.exists()) {
if (request.getParameter("download") != null)
response.setHeader("Content-disposition", "attachment; filename=" + media.getTitle() + "." + extension);
if (file.exists()) {
response.setContentType(contentType + "/" + extension);
response.setContentLength((int) file.length());
if (extension == null)
extension = FileUtil.getFileExtension(file);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
Streams.copy(in, response.getOutputStream(), false);
in.close();
} else
response.setStatus(404);
response.setContentType(MimeTypeUtil.getMimeByExtension(extension).toString());
response.setContentLength((int) file.length());
BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
Streams.copy(in, response.getOutputStream(), false);
in.close();
} else {
// Page not found
logger.warning("File does not exist: " + file);
response.setStatus(404);
}
}
@ -91,4 +105,11 @@ public class ContentServlet extends ZalleryServlet {
"?id=" + media.getId() + "&size=" + size.toString().toLowerCase() +
(download ? "&download" : "");
}
/**
* @return a URL for a specific media file where its data can be retrieved.
*/
public static String getFolderThumbnailUrl(Folder folder) {
return Zallery.WEBSITE_URL + "/folder";
}
}