• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

IO流断点续传下载视频报IOException

def file = params.file as Stringdef path = Constant.FILE_URL + Constant.FOLDER.nanny_video + filedef fileName = file.substring(0, file.indexOf(".") + 1)//只读def randomFile = new RandomAccessFile(new File(path), 'r')def contentLength = randomFile.length()def range = request.getHeader("Range")int start = 0, end = 0if (range != null && range.startsWith("bytes=")) {    def values = range.split("=")[1].split("-")    start = values[0] as int    if (values.length > 1) {        end = values[1] as int    }}int requestSize = 0if (end != 0 && end > start) {    requestSize = end - start + 1} else {    requestSize = Integer.MAX_VALUE}byte[] buffer = new byte[4096]response.setContentType('video/mp4')response.setHeader("Accept-Ranges", "bytes")response.setHeader("ETag", fileName)response.setHeader("Last-Modified", new Date().toString())if (range == null) {    response.setHeader("Content-length", "${contentLength}")} else {    response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT)    long requestStart = 0, requestEnd = 0    def ranges = range.split("=")    if (ranges.length > 0) {        def rangeDatas = ranges[1].split('-')        requestStart = rangeDatas[0] as int        if (rangeDatas.length > 1) {            requestEnd = rangeDatas[1] as int        }    }    long length = 0    if (requestEnd > 0) {        length = requestEnd - requestStart + 1        response.setHeader("Content-length", "${length}")        response.setHeader("Content-Range",                "bytes ${requestStart}-${requestEnd}/${contentLength}")    } else {        length = contentLength - requestStart        response.setHeader("Content-length", "${length}")        response.setHeader("Content-Range",                "bytes ${requestStart}-${contentLength - 1}/${contentLength}")    }}def out = response.outputStreamint needSize = requestSizerandomFile.seek(start)while (needSize > 0) {    int len = randomFile.read(buffer)    if (needSize < buffer.length) {        out.write(buffer, 0, needSize)    } else {        out.write(buffer, 0, len)        if (len < buffer.length) {            break        }    }    needSize -= buffer.length}randomFile.close()out.close()代码奉上,一打开就报java.io.IOException: 你的主机中的软件中止了一个已建立的连接。,虽然视频能正常播放,进度条也能拖动,但是日志空间太大了,也捕获不了

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!