Author: michiel
Date: 2010-06-18 17:39:24 +0200 (Fri, 18 Jun 2010)
New Revision: 42614

Modified:
   
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
Log:
more Content-Range stuff

Modified: 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
===================================================================
--- 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
       2010-06-18 15:17:10 UTC (rev 42613)
+++ 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
       2010-06-18 15:39:24 UTC (rev 42614)
@@ -368,6 +368,10 @@
             if (i > last)  return max - last;
             return 0;
         }
+        @Override
+        public String toString() {
+            return "" + (first > 0 ? first : "")+ "-" + (last < Long.MAX_VALUE 
? last : "");
+        }
     }
     /**
      * This implementation of Range parses and combines a number of {...@link 
FirstLastRange}s.
@@ -420,6 +424,15 @@
             if (length > max) length = max;
             return length;
         }
+        @Override
+        public String toString() {
+            StringBuilder bul = new StringBuilder();
+            for (Range r : ranges) {
+                if (bul.length() > 0) bul.append(",");
+                bul.append(r.toString());
+            }
+            bul.append("/").append(max);
+        }
     }
 
     /**
@@ -457,6 +470,7 @@
     protected static void stream(ChainedRange range, InputStream in, 
OutputStream out) throws IOException {
         byte[] buf = new byte[1024];
         if (range != null) {
+
             long pos = 0;
             while (pos < range.max) {
                 long available = range.available(pos);
@@ -488,6 +502,9 @@
         BufferedOutputStream out = new 
BufferedOutputStream(resp.getOutputStream());
         BufferedInputStream in = new BufferedInputStream(new 
FileInputStream(file));
         final ChainedRange range = getRange(req, file);
+        if (range != null) {
+            resp.addHeader("Content-Range", "bytes " + range.toString());
+        }
         stream(range, in, out);
     }
 

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to