87 lines
2.7 KiB
Java
87 lines
2.7 KiB
Java
package zall;
|
|
|
|
import java.io.BufferedInputStream;
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
|
|
import javax.servlet.ServletException;
|
|
import javax.servlet.http.HttpServlet;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpSession;
|
|
|
|
import org.apache.commons.fileupload.util.Streams;
|
|
|
|
import zall.bean.Image;
|
|
import zall.bean.Media;
|
|
import zall.bean.User;
|
|
import zall.bean.Video;
|
|
import zutil.db.DBConnection;
|
|
import zutil.io.file.FileUtil;
|
|
|
|
public class ZalleryContent extends HttpServlet{
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException{
|
|
DBConnection db = null;
|
|
try {
|
|
HttpSession session = request.getSession();
|
|
User user = (User) session.getAttribute("user");
|
|
String size = request.getParameter("size");
|
|
if( size == null ) size = "";
|
|
|
|
if( user != null || size.equalsIgnoreCase("small") ){
|
|
db = Zallery.getDB();
|
|
Media media;
|
|
|
|
if( "video".equals(request.getParameter("type")) )
|
|
media = Video.load(db, Integer.parseInt(request.getParameter("id")));
|
|
else
|
|
media = Image.load(db, Integer.parseInt(request.getParameter("id")));
|
|
|
|
if( media != null ){
|
|
File file = null;
|
|
if( size.equalsIgnoreCase( "small" ) )
|
|
file = media.getFile( Media.Size.SMALL );
|
|
else if( size.equalsIgnoreCase( "medium" ) )
|
|
file = media.getFile( Media.Size.MEDIUM );
|
|
else if( size.equalsIgnoreCase( "large" ) )
|
|
file = media.getFile( Media.Size.LARGE );
|
|
else
|
|
file = media.getFile( Media.Size.ORIGINAL );
|
|
|
|
if( request.getParameter("download") != null )
|
|
response.setHeader("Content-disposition", "attachment; filename="+media.getTitle()+"."+FileUtil.getFileExtension(file));
|
|
|
|
if( file.exists() ){
|
|
if( "video".equals(request.getParameter("type")) )
|
|
response.setContentType("video/"+FileUtil.getFileExtension(file));
|
|
else
|
|
response.setContentType("image/"+FileUtil.getFileExtension(file));
|
|
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
|
|
response.setStatus( 404 );
|
|
}
|
|
|
|
}
|
|
else{
|
|
// Unauthorized
|
|
response.setStatus( 401 );
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
throw new ServletException(e);
|
|
} finally{
|
|
if(db != null) db.close();
|
|
}
|
|
}
|
|
}
|