Fixed static folder thumbnails
This commit is contained in:
parent
c7747293c5
commit
eafb34d2c2
6 changed files with 57 additions and 27 deletions
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue