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

@ -26,7 +26,7 @@
<c:forEach items="${subFolders}" var="subFolder">
<div class="grid-item folder-thumb col-md-2 col-sm-3 col-xs-4">
<a href="?folder=${subFolder.id}">
<img class="img-responsive" src="" alt="${subFolder.name}" />
<img class="img-responsive" src="${subFolder.getUrlSmall()}" alt="${subFolder.name}" />
</a>
</div>
</c:forEach>

View file

@ -7,6 +7,7 @@ import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;
import zall.page.ContentServlet;
import zutil.db.DBConnection;
import zutil.db.bean.DBBean;
import zutil.db.bean.DBBeanSQLResultHandler;
@ -76,6 +77,10 @@ public class Folder extends DBBean {
String tmp = name.replaceAll("\\{NAME\\}", userName);
return tmp;
}
public String getRealName() {
return name.replaceAll("\\{NAME\\}",
"" + (owner != null ? owner.getId() : -1));
}
public void setName(String name) {
this.name = name;
}
@ -95,4 +100,8 @@ public class Folder extends DBBean {
return Folder.loadSubFolders(db, this).isEmpty() &&
Media.load(db, this).isEmpty();
}
public String getUrlSmall() {
return ContentServlet.getFolderThumbnailUrl(this);
}
}

View file

@ -106,13 +106,13 @@ public class Image extends Media {
BufferedImage image = null;
switch (size) {
case SMALL:
image = ImageUtil.cropScale(original, 125, 125);
image = ImageUtil.scale(original, 600, 600, true);
break;
case MEDIUM:
image = ImageUtil.scale(original, 500, 375, true);
image = ImageUtil.scale(original, 1200, 1200, true);
break;
case LARGE:
image = ImageUtil.scale(original, 1200, 800, true);
image = ImageUtil.scale(original, 2400, 2400, true);
break;
default:
break;
@ -120,9 +120,9 @@ public class Image extends Media {
ImageIO.write(image, IMAGE_FORMAT, file);
}
else if (!orgFile.exists())
logger.severe("Original image file missing: '" + file.getAbsolutePath() + "'");
logger.severe("Original image file missing: '" + orgFile.getAbsolutePath() + "'");
else if (orgFile.canRead())
logger.severe("Can not read original image file: '" + file.getAbsolutePath() + "'");
logger.severe("Can not read original image file: '" + orgFile.getAbsolutePath() + "'");
}
return file;
}

View file

@ -40,7 +40,7 @@ public class AuthenticationFilter implements Filter {
HttpServletRequest httpRequest = (HttpServletRequest) request;
User user = AuthenticationManager.getUserSession(httpRequest.getSession());
// continue the request via the filter pipeline if it is login page or it is a isValid User
// continue the request via the filter pipeline if it is login page or it is a valid User
if (AuthenticationManager.isValid(user, httpRequest)) {
logger.finest("User already authenticated, continuing filter chain.");
chain.doFilter(request, response);

View file

@ -101,7 +101,7 @@ public class ResourceManager {
currentFolder != null;
currentFolder = currentFolder.getParent()) {
path.insert(0, currentFolder.getName());
path.insert(0, currentFolder.getRealName());
if (path.charAt(0) != '/')
path.insert(0, '/');
}

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,10 +34,12 @@ 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_FOLDER = "/folder";
public static final String URI_IMAGE = "/image";
public static final String URI_VIDEO = "/video";
@ -40,14 +48,18 @@ public class ContentServlet extends ZalleryServlet {
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);
if (extension == null)
extension = FileUtil.getFileExtension(file);
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
response.setStatus(404);
} 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";
}
}