如何在不使用浏览器保存链接的情况下单击按钮下载视频文件.wmv并将其保存到用户的磁盘上作为如何使用ASP.NET下载视频?
2
A
回答
2
这并不难。正如dtb所述,用户的浏览器仍然会要求用户下载文件的权限,他们可能会选择在哪里保存文件。所以它不会是完全自动的。
这里是一个博客文章的链接,解释如何完成这个using webforms。你有兴趣的主要部分是这样的:
Response.ContentType = "video/x-ms-wmv";
Response.AppendHeader("Content-Disposition","attachment; filename=MyMovie.wmv");
Response.TransmitFile(Server.MapPath("~/videos/MyMovie.wmv"));
Response.End();
这里是一个链接栈溢出问题,这也解释了how to do it in MVC。
根据你的评论,你想在silverlight做到这一点。我不是silverlight的专家,但这里有另一个关于堆栈溢出的问题,discusses the issue。
1
可以使用WebClient
下载WMV文件和SaveFileDialog
要求用户把它放在哪里: -
void DownloadButton_Click(object sender, RoutedEventArgs e)
{
var dialog = new SaveFileDialog();
if (dialog.ShowDialog().Value)
{
var web = new WebClient();
web.OpenReadCompleted = (s, args) =>
{
try
{
using (args.Result)
using (Stream streamOut = args.UserState As Stream)
{
Pump(args.Result, streamOut);
}
}
catch
{
// Do something sensible when the download has failed.
}
};
web.OpenReadAsync(UriOfWmv, ShowDialog.OpenFile());
}
}
private static void Pump(Stream input, Stream output)
{
byte[] bytes = new byte[4096];
int n;
while((n = input.Read(bytes, 0, bytes.Length)) != 0)
{
output.Write(bytes, 0, n);
}
}
然而,目前情况下不显示下载进度信息的一种方式。我希望这会进入Silverlight 4,但据我所知,它没有。
+0
请给我一个'args'的例子吗?你也没有在代码块'web.OpenReadCompleted =(s,args)=>'中使用's',那是什么? – 2014-07-21 20:01:06
相关问题
- 1. 如何使用ruby下载YouTube视频?
- 2. 如何下载此视频?
- 3. 如何用java下载Youtube视频
- 4. 如何禁用下载视频选项
- 5. 如何下载视频的iframe用C#
- 6. 如何拒绝用户下载视频?
- 7. 下载视频
- 8. 限制在asp.net中下载视频
- 9. 如何在用web2py上传视频后下载视频
- 10. 用wget下载YouTube视频
- 11. 用PHP下载Youtube视频
- 12. 在YouTube上使用get_video下载视频
- 13. 使用sony remote api下载视频
- 14. 使用SDK下载iPhone上的视频
- 15. 从Python使用Youtube上下载视频
- 16. 使用Retrofit从Url下载视频
- 17. 使用webview下载视频文件
- 18. 使用c#下载你管视频?
- 19. 使用Javascript下载HTML5 mp4视频
- 20. 使用Java API下载youtube视频?
- 21. 使用NSOperationQueue的多视频下载
- 22. 使用flash下载youtube视频
- 23. 下载视频轨
- 24. iOS - 下载视频
- 25. 如何使用Asp.net Flash视频控件播放视频文件?
- 26. 如何使视频和音频文件可下载?
- 27. 如何防止下载HTML5视频
- 28. 如何将youtube api下载视频?
- 29. 如何在iOS中下载YouTube视频
- 30. 如何下载youtube视频php?
是否需要'Response.CacheControl =“No-Cache”? “WriteFile”和“TransmitFile”有什么不同? – abatishchev 2010-04-11 15:48:15
@abatishchev:根据MSDN,“无缓存”是默认值。所以,你不需要设置它。 WriteFile和TransmitFile之间的区别在于Transmit不会缓冲内存中的内容。请参阅:http://forums.asp.net/t/1513111.aspx – 2010-04-11 15:56:38
但我想在Silverlight应用程序中使用它,并没有system.web命名空间,所以我不能使用响应 我怎样才能读取它到字节[] ??那可能吗 ? – MirooEgypt 2010-04-11 16:15:30