329: Workspace download servlet return wrong size if file is bigger than 2GB
Task-Url: https://support.d4science.org/issues/329 Added work around to manage big data (> 2GB) git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@115802 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
25b563d07d
commit
f1ecb642b0
|
@ -5,7 +5,6 @@ package org.gcube.portlets.user.workspace.server;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
@ -20,7 +19,6 @@ import javax.servlet.http.HttpSession;
|
||||||
import org.apache.commons.io.FilenameUtils;
|
import org.apache.commons.io.FilenameUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.gcube.common.homelibrary.home.HomeLibrary;
|
|
||||||
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
import org.gcube.common.homelibrary.home.exceptions.InternalErrorException;
|
||||||
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
import org.gcube.common.homelibrary.home.workspace.Workspace;
|
||||||
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
import org.gcube.common.homelibrary.home.workspace.WorkspaceFolder;
|
||||||
|
@ -146,12 +144,9 @@ public class DownloadServlet extends HttpServlet{
|
||||||
File tmpZip = ZipUtil.zipFolder((WorkspaceFolder) item);
|
File tmpZip = ZipUtil.zipFolder((WorkspaceFolder) item);
|
||||||
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
||||||
resp.setContentType("application/zip");
|
resp.setContentType("application/zip");
|
||||||
resp.setContentLength((int) tmpZip.length());
|
resp = setContentLength(resp, tmpZip.length());
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
|
||||||
// IOUtils.copy(new FileInputStream(tmpZip), resp.getOutputStream());
|
|
||||||
|
|
||||||
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
||||||
IOUtils.copy(fileTmpZip, resp.getOutputStream());
|
IOUtils.copy(fileTmpZip, resp.getOutputStream());
|
||||||
fileTmpZip.close();
|
fileTmpZip.close();
|
||||||
|
@ -163,7 +158,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during folder compression "+itemId,e);
|
logger.error("Error during folder compression "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during folder compression: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during folder compression: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during folder compression: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,29 +169,22 @@ public class DownloadServlet extends HttpServlet{
|
||||||
case REPORT_TEMPLATE:{
|
case REPORT_TEMPLATE:{
|
||||||
try{
|
try{
|
||||||
ReportTemplate reportTemplate = (ReportTemplate)folderItem;
|
ReportTemplate reportTemplate = (ReportTemplate)folderItem;
|
||||||
|
|
||||||
String extension = FilenameUtils.getExtension(item.getName());
|
String extension = FilenameUtils.getExtension(item.getName());
|
||||||
|
|
||||||
String itemName = item.getName();
|
String itemName = item.getName();
|
||||||
|
|
||||||
logger.trace("case REPORT_TEMPLATE extension is" +extension);
|
logger.trace("case REPORT_TEMPLATE extension is" +extension);
|
||||||
|
|
||||||
if(extension.compareToIgnoreCase(Extensions.REPORT_TEMPLATE.getName())!=0) //ADD EXTENSION?
|
if(extension.compareToIgnoreCase(Extensions.REPORT_TEMPLATE.getName())!=0) //ADD EXTENSION?
|
||||||
itemName = "." + Extensions.REPORT_TEMPLATE.getName();
|
itemName = "." + Extensions.REPORT_TEMPLATE.getName();
|
||||||
|
|
||||||
logger.trace("case REPORT_TEMPLATE itemName is" +extension);
|
logger.trace("case REPORT_TEMPLATE itemName is" +extension);
|
||||||
|
|
||||||
// String itemName = item.getName() + "." + Extensions.REPORT_TEMPLATE.getValue();
|
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
resp.setContentType("application/zip");
|
resp.setContentType("application/zip");
|
||||||
resp.setContentLength((int) reportTemplate.getLength());
|
resp = setContentLength(resp, reportTemplate.getLength());
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
// IOUtils.copy(reportTemplate.getData(), resp.getOutputStream());
|
|
||||||
InputStream is = reportTemplate.getData();
|
InputStream is = reportTemplate.getData();
|
||||||
IOUtils.copy(is, resp.getOutputStream());
|
IOUtils.copy(is, resp.getOutputStream());
|
||||||
is.close();
|
is.close();
|
||||||
|
@ -206,7 +193,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -215,28 +201,22 @@ public class DownloadServlet extends HttpServlet{
|
||||||
case REPORT:{
|
case REPORT:{
|
||||||
try{
|
try{
|
||||||
Report report = (Report)folderItem;
|
Report report = (Report)folderItem;
|
||||||
|
|
||||||
String extension = FilenameUtils.getExtension(item.getName());
|
String extension = FilenameUtils.getExtension(item.getName());
|
||||||
|
|
||||||
String itemName = item.getName();
|
String itemName = item.getName();
|
||||||
|
|
||||||
logger.trace("case REPORT extension is" +extension);
|
logger.trace("case REPORT extension is" +extension);
|
||||||
|
|
||||||
if(extension.compareToIgnoreCase(Extensions.REPORT.getName())!=0) //ADD EXTENSION?
|
if(extension.compareToIgnoreCase(Extensions.REPORT.getName())!=0) //ADD EXTENSION?
|
||||||
itemName = "." + Extensions.REPORT.getName();
|
itemName = "." + Extensions.REPORT.getName();
|
||||||
|
|
||||||
logger.trace("case REPORT itemName is" +extension);
|
logger.trace("case REPORT itemName is" +extension);
|
||||||
// String itemName = item.getName() + "." + Extensions.REPORT.getValue();
|
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
resp.setContentType("application/zip");
|
resp.setContentType("application/zip");
|
||||||
resp.setContentLength((int) report.getLength());
|
resp = setContentLength(resp, report.getLength());
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
// IOUtils.copy(report.getData(), resp.getOutputStream());
|
|
||||||
InputStream is = report.getData();
|
InputStream is = report.getData();
|
||||||
IOUtils.copy(is, resp.getOutputStream());
|
IOUtils.copy(is, resp.getOutputStream());
|
||||||
is.close();
|
is.close();
|
||||||
|
@ -245,7 +225,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
logger.error("Error during external item sending "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -262,28 +241,11 @@ public class DownloadServlet extends HttpServlet{
|
||||||
String mimeType = externalFile.getMimeType();
|
String mimeType = externalFile.getMimeType();
|
||||||
|
|
||||||
logger.trace("EXTERNAL_FILE DOWNLOAD FOR "+externalFile.getId());
|
logger.trace("EXTERNAL_FILE DOWNLOAD FOR "+externalFile.getId());
|
||||||
//COMMENTED 26/03/2013
|
|
||||||
// String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
//COMMENTED 26/03/2013
|
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + "\"" );
|
||||||
// resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + "\"" );
|
|
||||||
resp.setContentType(mimeType);
|
resp.setContentType(mimeType);
|
||||||
|
resp = setContentLength(resp, externalFile.getLength());
|
||||||
resp.setContentLength((int) externalFile.getLength());
|
|
||||||
|
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
|
||||||
// IOUtils.copy(externalFile.getData(), resp.getOutputStream());
|
|
||||||
is = externalFile.getData();
|
is = externalFile.getData();
|
||||||
|
|
||||||
// //REMOVE THIS -- TODO TEMPORARY SOLUTION
|
|
||||||
// if(is==null){
|
|
||||||
// logger.error("Error during get input stream: IS is null");
|
|
||||||
// throw new Exception("Item is not reachable");
|
|
||||||
// }
|
|
||||||
|
|
||||||
out = resp.getOutputStream();
|
out = resp.getOutputStream();
|
||||||
IOUtils.copy(is, out);
|
IOUtils.copy(is, out);
|
||||||
|
|
||||||
|
@ -293,7 +255,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during external item retrieving "+itemId,e);
|
logger.error("Error during external item retrieving "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -310,21 +271,9 @@ public class DownloadServlet extends HttpServlet{
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
resp.setContentType(externalImage.getMimeType());
|
resp.setContentType(externalImage.getMimeType());
|
||||||
|
resp = setContentLength(resp, externalImage.getLength());
|
||||||
resp.setContentLength((int) externalImage.getLength());
|
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
|
||||||
// IOUtils.copy(externalImage.getData(), resp.getOutputStream());
|
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
InputStream is = externalImage.getData();
|
InputStream is = externalImage.getData();
|
||||||
|
|
||||||
|
|
||||||
// //REMOVE THIS -- TODO TEMPORARY SOLUTION
|
|
||||||
// if(is==null){
|
|
||||||
// logger.error("Error during get input stream: IS is null");
|
|
||||||
// throw new Exception("Item is not reachable");
|
|
||||||
// }
|
|
||||||
|
|
||||||
IOUtils.copy(is, out);
|
IOUtils.copy(is, out);
|
||||||
is.close();
|
is.close();
|
||||||
|
|
||||||
|
@ -333,7 +282,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during item retrieving "+itemId,e);
|
logger.error("Error during item retrieving "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -341,18 +289,11 @@ public class DownloadServlet extends HttpServlet{
|
||||||
try{
|
try{
|
||||||
ExternalUrl externalUrl = (ExternalUrl)folderItem;
|
ExternalUrl externalUrl = (ExternalUrl)folderItem;
|
||||||
|
|
||||||
//ADDED 20/06/2013
|
|
||||||
String itemName = MimeTypeUtil.getNameWithExtension(externalUrl.getName(), "text/uri-list");
|
String itemName = MimeTypeUtil.getNameWithExtension(externalUrl.getName(), "text/uri-list");
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
||||||
|
|
||||||
// //ADDED 20/06/2013
|
|
||||||
// String itemName = externalUrl.getName() + ".uri";
|
|
||||||
// String contentDisposition = (viewContent)?"inline":"attachment";
|
|
||||||
// resp.setHeader("Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
|
||||||
|
|
||||||
resp.setContentType("text/uri-list");
|
resp.setContentType("text/uri-list");
|
||||||
resp.setContentLength((int) externalUrl.getLength());
|
resp = setContentLength(resp, externalUrl.getLength());
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
StringReader sr = new StringReader(externalUrl.getUrl());
|
StringReader sr = new StringReader(externalUrl.getUrl());
|
||||||
|
@ -365,7 +306,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during item retrieving "+itemId,e);
|
logger.error("Error during item retrieving "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -374,11 +314,10 @@ public class DownloadServlet extends HttpServlet{
|
||||||
Query query = (Query)folderItem;
|
Query query = (Query)folderItem;
|
||||||
resp.setContentType("text/plain");
|
resp.setContentType("text/plain");
|
||||||
try {
|
try {
|
||||||
resp.setContentLength((int) query.getLength());
|
resp = setContentLength(resp, query.getLength());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error getting item lenght "+query,e);
|
logger.error("Error getting item lenght "+query,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,9 +338,8 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
String contentDisposition = (viewContent)?"inline":"attachment";
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + ".zip\"" );
|
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + ".zip\"" );
|
||||||
|
|
||||||
resp.setContentType("application/zip");
|
resp.setContentType("application/zip");
|
||||||
resp.setContentLength((int) tmpZip.length());
|
resp = setContentLength(resp, tmpZip.length());
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
|
@ -415,37 +353,9 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during item retrieving "+itemId,e);
|
logger.error("Error during item retrieving "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*case AQUAMAPS_ITEM:{
|
|
||||||
try{
|
|
||||||
AquaMapsItem aquamaps = (AquaMapsItem)folderItem;
|
|
||||||
File tmpZip = ZipUtil.zipAquaMapsItem(aquamaps);
|
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + item.getName() + ".zip\"" );
|
|
||||||
|
|
||||||
resp.setContentType("application/zip");
|
|
||||||
resp.setContentLength((int) tmpZip.length());
|
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
|
||||||
OutputStream out = resp.getOutputStream();
|
|
||||||
FileInputStream fileTmpZip = new FileInputStream(tmpZip);
|
|
||||||
IOUtils.copy(fileTmpZip, out);
|
|
||||||
fileTmpZip.close();
|
|
||||||
|
|
||||||
out.close();
|
|
||||||
tmpZip.delete();
|
|
||||||
return;
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("Error during item retrieving "+itemId,e);
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
case IMAGE_DOCUMENT:
|
case IMAGE_DOCUMENT:
|
||||||
case PDF_DOCUMENT:
|
case PDF_DOCUMENT:
|
||||||
case URL_DOCUMENT:
|
case URL_DOCUMENT:
|
||||||
|
@ -459,7 +369,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
|
|
||||||
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
resp.setHeader( "Content-Disposition", "attachment; filename=\"" + item.getName() + ".zip\"" );
|
||||||
resp.setContentType("application/zip");
|
resp.setContentType("application/zip");
|
||||||
resp.setContentLength((int) tmpZip.length());
|
resp = setContentLength(resp, tmpZip.length());
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
|
@ -475,8 +385,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
||||||
resp.setHeader( "Content-Disposition", "inline; filename=\"" + itemName + "\"" );
|
resp.setHeader( "Content-Disposition", "inline; filename=\"" + itemName + "\"" );
|
||||||
resp.setContentType(document.getMimeType());
|
resp.setContentType(document.getMimeType());
|
||||||
resp.setContentLength((int) document.getLength());
|
resp = setContentLength(resp, document.getLength());
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
InputStream is = document.getData();
|
InputStream is = document.getData();
|
||||||
|
@ -489,7 +398,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during item retrieving "+itemId,e);
|
logger.error("Error during item retrieving "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -500,104 +408,47 @@ public class DownloadServlet extends HttpServlet{
|
||||||
GCubeItem metadata = (GCubeItem) item; //Cast GCubeItem
|
GCubeItem metadata = (GCubeItem) item; //Cast GCubeItem
|
||||||
|
|
||||||
resp.setContentType("text/html");
|
resp.setContentType("text/html");
|
||||||
resp.setContentLength((int) metadata.getLength());
|
resp = setContentLength(resp, metadata.getLength());
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
//MODIFIED 22-05-2013 CLOSE STREAM
|
||||||
OutputStream out = resp.getOutputStream();
|
OutputStream out = resp.getOutputStream();
|
||||||
// StringReader sr = new StringReader(metadata.getData());
|
|
||||||
InputStream is = metadata.getData();
|
InputStream is = metadata.getData();
|
||||||
IOUtils.copy(is, out);
|
IOUtils.copy(is, out);
|
||||||
is.close();
|
is.close();
|
||||||
|
|
||||||
out.close();
|
out.close();
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("Error during item retrieving "+itemId,e);
|
logger.error("Error during item retrieving "+itemId,e);
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/*COMMENT ACCORDING TO HL
|
|
||||||
case EXTERNAL_RESOURCE_LINK:{//IT'S SAME OF EXTERNAL FILE
|
|
||||||
|
|
||||||
try{
|
|
||||||
ExternalResourceLink externalResourceLink = (ExternalResourceLink) folderItem;
|
|
||||||
OutputStream out = resp.getOutputStream();
|
|
||||||
|
|
||||||
try {
|
|
||||||
String mimeType = externalResourceLink.getMimeType();
|
|
||||||
if(mimeType == null){
|
|
||||||
logger.trace("mimeType is null... recover from MimeTypeUtil by BufferedInputStream");
|
|
||||||
|
|
||||||
BufferedInputStream bufferedStream = new BufferedInputStream(externalResourceLink.getData(), (int) externalResourceLink.getLength());
|
|
||||||
mimeType = MimeTypeUtil.getMimeType(externalResourceLink.getName(), bufferedStream);
|
|
||||||
}
|
|
||||||
|
|
||||||
logger.trace("setContentType with mimeType " + mimeType);
|
|
||||||
String itemName = MimeTypeUtil.getNameWithExtension(item.getName(), mimeType);
|
|
||||||
|
|
||||||
String contentDisposition = (viewContent)?"inline":"attachment";
|
|
||||||
resp.setHeader( "Content-Disposition", contentDisposition+"; filename=\"" + itemName + "\"" );
|
|
||||||
resp.setContentType(mimeType);
|
|
||||||
|
|
||||||
|
|
||||||
logger.trace("resoure link lenght: " +externalResourceLink.getLength());
|
|
||||||
|
|
||||||
resp.setContentLength((int) externalResourceLink.getLength());
|
|
||||||
|
|
||||||
if(externalResourceLink.getData()!=null){
|
|
||||||
logger.trace("Input stream is not null");
|
|
||||||
|
|
||||||
//MODIFIED 22-05-2013 CLOSE STREAM
|
|
||||||
InputStream eris = externalResourceLink.getData();
|
|
||||||
IOUtils.copy(eris, resp.getOutputStream());
|
|
||||||
eris.close();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
logger.error("Input stream is null "+itemId);
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during inpunt stream retrieving, it's null");
|
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during inpunt stream retrieving, it's null");
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (ExternalResourceBrokenLinkException e) {
|
|
||||||
logger.error("Error during link resource retrieving "+itemId,e);
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during link retrieving, link broken!: "+e.getMessage());
|
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during link retrieving, link broken!: "+e.getMessage());
|
|
||||||
} catch (ExternalResourcePluginNotFoundException e) {
|
|
||||||
logger.error("Error during link resource retrieving "+itemId,e);
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during link retrieving, plugin not found!: "+e.getMessage());
|
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during link retrieving, plugin not found!: "+e.getMessage());
|
|
||||||
}
|
|
||||||
out.close();
|
|
||||||
} catch (InternalErrorException e) {
|
|
||||||
logger.error("Error during external item sending "+itemId,e);
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId, HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving: "+e.getMessage());
|
|
||||||
return;
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("Error during resource retrieving "+itemId,e);
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during resource retrieving! "+e.getMessage());
|
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during resource retrieving, plugin not found!: "+e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleError(urlRedirectOnError, req, resp, itemId,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving");
|
handleError(urlRedirectOnError, req, resp, itemId,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving");
|
||||||
// sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Error during data retrieving");
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to manage HttpServletResponse content length also to big data
|
||||||
|
* @param resp
|
||||||
|
* @param length
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected HttpServletResponse setContentLength(HttpServletResponse resp, long length){
|
||||||
|
try{
|
||||||
|
if (length <= Integer.MAX_VALUE)
|
||||||
|
resp.setContentLength((int)length);
|
||||||
|
else
|
||||||
|
resp.addHeader("Content-Length", Long.toString(length));
|
||||||
|
}catch(Exception e){
|
||||||
|
//silent
|
||||||
|
}
|
||||||
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void handleError(boolean urlRedirectOnError, HttpServletRequest req, HttpServletResponse resp, String itemId, String message) throws IOException{
|
protected void handleError(boolean urlRedirectOnError, HttpServletRequest req, HttpServletResponse resp, String itemId, String message) throws IOException{
|
||||||
|
@ -619,8 +470,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
logger.trace("writing response...");
|
logger.trace("writing response...");
|
||||||
StringReader sr = new StringReader(resultMessage.toString());
|
StringReader sr = new StringReader(resultMessage.toString());
|
||||||
IOUtils.copy(sr, response.getOutputStream());
|
IOUtils.copy(sr, response.getOutputStream());
|
||||||
|
|
||||||
// response.getWriter().write(resultMessage.toString());
|
|
||||||
logger.trace("response writed");
|
logger.trace("response writed");
|
||||||
response.flushBuffer();
|
response.flushBuffer();
|
||||||
}
|
}
|
||||||
|
@ -634,8 +484,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
logger.trace("writing response...");
|
logger.trace("writing response...");
|
||||||
StringReader sr = new StringReader(resultMessage.toString());
|
StringReader sr = new StringReader(resultMessage.toString());
|
||||||
IOUtils.copy(sr, response.getOutputStream());
|
IOUtils.copy(sr, response.getOutputStream());
|
||||||
|
|
||||||
// response.getWriter().write(resultMessage.toString());
|
|
||||||
logger.trace("response writed");
|
logger.trace("response writed");
|
||||||
response.flushBuffer();
|
response.flushBuffer();
|
||||||
}
|
}
|
||||||
|
@ -701,7 +550,6 @@ public class DownloadServlet extends HttpServlet{
|
||||||
// }
|
// }
|
||||||
// if (queryString != null) {
|
// if (queryString != null) {
|
||||||
// url.append("?").append(queryString);
|
// url.append("?").append(queryString);
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
PortalUrlGroupGatewayProperty p = new PortalUrlGroupGatewayProperty();
|
PortalUrlGroupGatewayProperty p = new PortalUrlGroupGatewayProperty();
|
||||||
|
@ -722,6 +570,7 @@ public class DownloadServlet extends HttpServlet{
|
||||||
return url.toString();
|
return url.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
|
@ -766,5 +615,5 @@ public class DownloadServlet extends HttpServlet{
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,9 @@ import org.gcube.common.scope.impl.ScopeBean;
|
||||||
public class SizeRetrieving {
|
public class SizeRetrieving {
|
||||||
|
|
||||||
|
|
||||||
public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
// public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
||||||
public static String TEST_USER = "andrea.manzi";
|
public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps/DESCRAMBLE";
|
||||||
|
public static String TEST_USER = "massimiliano.assante";
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue