码迷,mamicode.com
首页 > 其他好文 > 详细

a标签下载文件

时间:2016-07-05 01:04:08      阅读:2132      评论:0      收藏:0      [点我收藏+]

标签:

本来想慢慢写总结的,结果今天来了新项目,又要忙了。

随便写点记录下好了,有个大概印象,将来也好知道去哪儿找。

 

标题没想好就随手写了,其实是这样的,这个项目需要连接azure虚拟机,就是ms的那个。

然后虚拟机不是可以远程连接么,你在azure上操作的时候就是点击了链接虚拟机按钮,然后会让你下载一个rdp文件,打开这个文件输入你用户名的帐号密码就能连了。

其实这个rdp文件就是个txt,里面就两行,长这样。

full address:s:××××.×××××:××××
prompt for credentials:i:1

第一段×××是云服务名,第二段域名,第三段端口。

(项目里实际做过之后才知道,azure建立虚拟机,首先要建云服务,然后是存储空间,网络,最后是虚拟机,这段当然。。。不是我写的,我想想要不要写下)

 

废话太多,继续说下载这个文件的事。

1.首先后台要生成这个文件的内容

VirtualMachineGetRemoteDesktopFileResponse remoteFile=ComputeManagementClient.VirtualMachines.GetRemoteDesktopFile(serviceName, serviceName, vmName);   这段直接抄必然是错的233333,我省了实例化。还有这个第二个参数是deployment名,就是部署名,我这里是和服务名一样的。

byte[] file = remoteFile.RemoteDesktopFile;

return File(new MemoryStream(file), "text/plain",vmName+ ".rdp");

这样后台就把文件内容返回了。

 

2.前台,也就是我被坑到的地方,主要还是ie的保护机制。

var blob = new Blob([data], {type: "text/plain"});
                    var fileName = vm.VMName+‘.rdp‘;
                    var a = document.createElement("a");
                    document.body.appendChild(a);
                    a.download = fileName;
                    a.href = URL.createObjectURL(blob);
                    try {
                        a.click();
                    } catch (e) {
                        navigator.msSaveBlob(blob, fileName);
                    }

那个data就是后台返回的东西,最开始我是只写了a.clcik,然后过了几天- -发现ie下用不了,然后才注意到,ie禁止做这种模拟点击啊之类的操作。

于是搜了一些方法,试到msSaveBlob的时候发现可以,于是就用了这个,当然我只是了ff,chrome,和ie11,别的再出问题再说。

写完收工。

a标签下载文件

标签:

原文地址:http://www.cnblogs.com/suzu/p/5642111.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!