diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDatasetDownloadServlet.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDatasetDownloadServlet.java index b44c7539a760ed3c5bf574ce03a63cda2af9bab4..d4c7523987965f445047776604bd777757bd614b 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDatasetDownloadServlet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/AbstractDatasetDownloadServlet.java @@ -176,7 +176,13 @@ abstract public class AbstractDatasetDownloadServlet extends HttpServlet final HttpServletResponse response) throws IOException { response.setHeader("Content-Disposition", responseStream.getHeaderContentDisposition()); - response.setContentLength(responseStream.getSize()); + if (responseStream.getSize() <= Integer.MAX_VALUE) + { + response.setContentLength((int) responseStream.getSize()); + } else + { + response.addHeader("Content-Length", Long.toString(responseStream.getSize())); + } response.setContentType(responseStream.getContentType()); ServletOutputStream outputStream = null; @@ -231,13 +237,13 @@ abstract public class AbstractDatasetDownloadServlet extends HttpServlet { private final InputStream inputStream; - private final int size; + private final long size; private final String contentType; private final String headerContentDisposition; - public ResponseContentStream(InputStream inputStream, int size, String contentType, + public ResponseContentStream(InputStream inputStream, long size, String contentType, String headerContentDisposition) { this.inputStream = inputStream; @@ -251,7 +257,7 @@ abstract public class AbstractDatasetDownloadServlet extends HttpServlet return inputStream; } - public int getSize() + public long getSize() { return size; } diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java index e28a6b57e28f9d03093e1ebd8dce65968e539240..d0e84908877dfb2c9434472417f6894d936ea205 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/DatasetDownloadServlet.java @@ -453,10 +453,9 @@ public class DatasetDownloadServlet extends AbstractDatasetDownloadServlet private static ResponseContentStream createResponseContentStream(File file, String displayMode) throws FileNotFoundException { - int size = (int) file.length(); String contentType = getMimeType(file, displayMode.equals(TEXT_MODE_DISPLAY)); String headerContentDisposition = "inline; filename=" + file.getName(); - return new ResponseContentStream(new FileInputStream(file), size, contentType, + return new ResponseContentStream(new FileInputStream(file), file.length(), contentType, headerContentDisposition); }