我们通过ASP.NET中的ASHX处理程序提供应用程序设置的下载.
客户告诉我们他使用了一些第三方下载管理器应用程序,我们提供文件的方式目前不支持他的下载管理器应用程序的"恢复"功能.
我的问题是:
恢复下载的基本思路是什么?是否有某个HTTP GET请求告诉我开始的偏移?
有没有一种方法可以将视频通过asp.net流式传输到普通网页和移动设备?我尝试了以下但是它在索尼爱立信K810i中无效.当我在浏览器中尝试它时,我可以看到剪辑(不知道它是否正在流式传输).
HTML:
<object type="video/3gpp"
data="handlers/FileHandler.ashx"
id="player"
width="176"
height="148"
autoplay="true"></object>
Run Code Online (Sandbox Code Playgroud)
FileHandler.ashx(在ASP.NET中流式传输文件的最佳方式):
public void ProcessRequest (HttpContext context) {
string path = "~/files/do.3gp";
string localPath = context.Server.MapPath(path);
if (!File.Exists(localPath))
{
return;
}
// get info about contenttype etc
FileInfo fileInfo = new FileInfo(localPath);
int len = (int)fileInfo.Length;
context.Response.AppendHeader("content-length", len.ToString());
context.Response.ContentType = FileHelper.GetMimeType(fileInfo.Name); // returns video/3gpp
// stream file
byte[] buffer = new byte[1 << 16]; // 64kb
int bytesRead = 0;
using(var file = File.Open(localPath, FileMode.Open))
{
while((bytesRead = file.Read(buffer, 0, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 ashx 处理程序作为 HTML5 视频源。我可以做到这一点,但我无法在已经缓冲的视频上进一步前进。
我可以在使用标准 MP4 源的网络选项卡上看到,向前查找会创建另一个请求,但使用处理程序则不会。
有些视频超过 1 GB。
到目前为止,这是我必须让视频正常工作的内容:
public void ProcessRequest(HttpContext context)
{
context.Response.Buffer = false;
context.Response.ContentType = "video/mp4";
FileInfo file = new FileInfo(path);
int len = (int)file.Length, bytes;
context.Response.AppendHeader("content-length", len.ToString());
byte[] buffer = new byte[1024];
Stream outStream = context.Response.OutputStream;
using (Stream stream = File.OpenRead(path))
{
while (len > 0 && (bytes = stream.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, bytes);
len -= bytes;
}
}
}
Run Code Online (Sandbox Code Playgroud)
摘自 Marck Gravells 的帖子Best way to stream …
我在做什么是我有一个动态表并创建所有工作正常的行。在其中一个单元格中,我试图创建一个链接,单击该链接将打开一个文件。但是当我点击链接时,它给了我一个错误,说在文件中找不到服务器。然后我做的检查文件是我在地址栏中键入位置,它找到它但将地址更改为(file:///c:/inetpub/wwwroot/test1.txt)。所以我所做的是将该地址放入锚标记中,但它仍然不起作用。这是我到目前为止所拥有的。任何帮助将不胜感激。
tblrow = New TableHeaderRow
tblcell = New TableHeaderCell
tblcell.Text = "<a href='C://inetpub/wwwroot/test1.txt' target='_blank'>" & Test & "</a>"
tblrow.Cells.Add(tblcell)
tableName.Rows.Add(tblrow)
Run Code Online (Sandbox Code Playgroud)