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);
     }