我有一个网站,在那里用户可以选择观看视频(没有版权)是在第三方网站上。从用户选择它的那一刻起,它需要下载到我的web服务器上,然后用户才能访问它。我试图在第三方网站上自动开始下载,并使用此路径制作response.redirect,但当用户观看视频时,如果视频只下载了10秒,任何播放器/浏览器都会将此视频视为10秒视频,并在10秒后停止。
重定向流而不是文件的最佳实践是什么?
发布于 2012-09-11 12:33:18
我发现这段代码做的正是我想要的。它在第三方网站上下载一个文件,当它流式传输时,每个块都被写入响应中,所以它完全混淆了来源。因此,可以从任何网站提供任何文件,就像我拥有它一样。
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 Subhttps://stackoverflow.com/questions/12339322
复制相似问题