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