解决方案 »
- intillij idea 怎样显示被隐藏的窗口
- Hibernate插入数据的速度为什么这么慢
- jsp 标签库 的优缺点
- 请struts熟悉的达人入,关于循环
- IBM R52的机器可以重装XP的系统吗?
- 如何用javascript实现异同校验?
- checkbox提交
- 如何将自1970-01-01 00:00:01到当前时间的总秒数转化成日期格式 在线等待
- 程序更新的问题!!!很奇怪!!!急!那位仁兄帮帮小女子吧!!!!!!!:`(
- 【求助】使用spring-security的时候没走UserDetailsServiceImpl这个类,直接给我跳转到login_error.html了
- 求java 使用jxl导出下载Excel表格到客户端(就是服务器到本地)
- MYSQL可以查出,java查不出,String index out of range: 0(datetime和Timestamp 相关)
try (
SeekableByteChannel input = Files.newByteChannel(path, StandardOpenOption.READ);
WritableByteChannel output = Channels.newChannel(resp.getOutputStream())) {
String range = req.getHeader("range");
int pos = 0;
if(range != null && range.length() > 0) {
pos = Integer.valueOf(range.replaceFirst("bytes=", "").split("-")[0]);
}
int len = (int)Files.size(path);
resp.addHeader("Accept-Ranges", "bytes");
resp.addHeader("Connection", "keep-alive");
if(pos > 0) {
resp.setStatus(206);
resp.addHeader("Content-Range", String.format("bytes %d-%d/%d", pos, len - 1, len));
input.position(pos);
}
long time = Files.getLastModifiedTime(path, LinkOption.NOFOLLOW_LINKS).toMillis();
resp.addHeader("ETag", "\"" + time + "\"");
resp.addDateHeader("Last-Modified", time);
resp.setContentType("audio/mpeg");
resp.addIntHeader("Content-Length", len);
ByteBuffer bb = ByteBuffer.allocate(2048);
while(input.read(bb) != -1) {
bb.flip();
output.write(bb);
bb.clear();
}
} catch(IOException e) {
e.printStackTrace();
}