首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Response.Redirect下载正在进行中

Response.Redirect下载正在进行中
EN

Stack Overflow用户
提问于 2012-09-09 21:07:58
回答 1查看 434关注 0票数 0

我有一个网站,在那里用户可以选择观看视频(没有版权)是在第三方网站上。从用户选择它的那一刻起,它需要下载到我的web服务器上,然后用户才能访问它。我试图在第三方网站上自动开始下载,并使用此路径制作response.redirect,但当用户观看视频时,如果视频只下载了10秒,任何播放器/浏览器都会将此视频视为10秒视频,并在10秒后停止。

重定向流而不是文件的最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-11 12:33:18

我发现这段代码做的正是我想要的。它在第三方网站上下载一个文件,当它流式传输时,每个块都被写入响应中,所以它完全混淆了来源。因此,可以从任何网站提供任何文件,就像我拥有它一样。

代码语言:javascript
复制
Private Sub SendFile(ByVal url As String)
    Dim stream As System.IO.Stream = Nothing
    Dim bytesToRead As Integer = 10000
    Dim buffer() As Byte = New Byte((bytesToRead) - 1) {}

    Try

        Dim fileReq As System.Net.WebRequest = CType(System.Net.HttpWebRequest.Create(url), System.Net.HttpWebRequest)
        Dim fileResp As System.Net.HttpWebResponse = CType(fileReq.GetResponse, System.Net.HttpWebResponse)
        If (fileReq.ContentLength > 0) Then
            fileResp.ContentLength = fileReq.ContentLength
        End If
        stream = fileResp.GetResponseStream
        Dim resp As System.Web.HttpResponse = HttpContext.Current.Response
        resp.ContentType = "application/octet-stream"
        resp.AddHeader("Content-Disposition", ("attachment; filename=\""" + ("mp3" + "\""")))
        resp.AddHeader("Content-Length", fileResp.ContentLength.ToString)
        Dim length As Integer = 1000000
        While (length > 0)
            If resp.IsClientConnected Then
                length = stream.Read(buffer, 0, bytesToRead)
                resp.OutputStream.Write(buffer, 0, length)
                resp.Flush()
                buffer = New Byte((bytesToRead) - 1) {}
            Else
                length = -1
            End If        
        End While
    Catch
        stream.Close()
    Finally
        If (Not (stream) Is Nothing) Then
            stream.Close()
        End If
    End Try
    Response.End()
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12339322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档