今日老板要求实现在网站上,当用户点击时,可以在用户电脑的桌面上创建一到网站快捷方式的快捷键。
在网上查阅相关资料,一种方法是javascript实现,但是要用到activex控件,这IE上才有,用IE的貌似很少了吧,而且activex控件没几个人愿意开啊。放弃。
其他的说的asp.net创建快捷方式的方法,看着感觉都是要在桌面上创建一文件,这软件才有这权限吧。在网页上谁肯给你这权限。于是也放弃了。
最后感觉没招了,就问老板,在哪来看的,有这种NB功能。原来是自己在桌面创建个到自己网站的快捷方式,然后做个下载链接,让用户下载到桌面。这样来实现。这一想,还
真可以。于是就来实现。仔细研究了下,在桌面创建了一个快捷方式,然后用editplus打开后,看到有如下代码:
[{000214A0-0000-0000-C000-000000000046}]
Prop3=19,2
[InternetShortcut]
URL=http://jiaogui.jinrimianshi.com/
IDList=
并且看到此文件的后缀名为.url
把这个文件放到网站上,然后做了个下载链接。提示404错误。理解,因为url后缀网站不支持。在网站的MIME类型中添加.url,然后MIME类型设置为:application/octet-stream。下载下来,可以使用,只是图标是系统图标,不是网站的logo标志。由于以前做过excel文件下载,知道mvc有专业支持文件下载的一类action。因此打算用那种实现以下,在网上找,但是没有找到MVC的实现方法,自己写了个,代码如下:
public FileContentResult ShortCut()
{
string HostAddr = "http://jiaogui.jinrimianshi.com";
string icoPath = "http://jiaogui.jinrimianshi.com/Favicon.ico";//修改此处更改url图标或者图标路径,当前路径为根目录,只用修改相对路径,图标的完整路径由下方会自动生成
StringBuilder sb = new StringBuilder();
sb.AppendLine("[InternetShortcut]");
sb.AppendLine("URL=" + HostAddr); //快捷方式的外部链接
sb.AppendLine("IDList= ");
sb.AppendLine("IconFile=" + icoPath); //图标文件
sb.AppendLine("IconIndex=1 ");
sb.AppendLine("[{000214A0-0000-0000-C000-000000000046}]");
sb.AppendLine("Prop3=19,2 ");
//第一种:使用FileContentResult
byte[] fileContents = Encoding.Default.GetBytes(sb.ToString());
string fileName = System.Web.HttpUtility.UrlEncode("交规网站", System.Text.Encoding.UTF8) + ".url";
return File(fileContents, "APPLICATION/OCTET-STREAM", fileName);
}
前台下载链接:
<a href="/home/shortcut" class="btn btn-default" >下载快捷方式</a>测试通过