您的位置:首页 > Web前端 > JavaScript

javascript+C#下载服务器文件到本地方法

2018-03-07 16:59 603 查看
  从服务器下载文件到本地,即前端向后端请求文件路径,然后打开该路径。

  ……个人感觉这个方法不是很安全,但目前没找到可以完全实现的其他方法。

  具体实现方法为:

html部分

<button id="backup">下载</button>


javascript部分

这部分引入了一个layer.js文件,它是一个web弹层组件,在这里使用它的等待动画

$("#backup").unbind("click").bind("click", function () {
Backup();
});

function Backup() {
var loading = layer.load(1);
var jsontext = encodeURI('{"functionname":"backup"}');
var URL = WebServiceAddress + jsontext;  //WebServiceAddress为你的C#路径
//创建同步对象
var theWorker = new Worker("Jscript/worker.js");
theWorker.postMessage(URL); //由于js是单线程,此处需要等待和数据传输同时进行,因而需要开辟一个新线程
theWorker.onmessage = function (p1) {
var res=p1.data; //返回文件路径
if (res !== "failed") {
$("<a>",{
id:'backupa',
href: res,
text: "123",
style: "display: none;"
}).appendTo("#adminmessage_id");
layer.close(loading);
document.getElementById("backupa").click();
}
else {
alert("失败!");
layer.close(loading);
}
};
}


//这是一个单独的js文件,即上面引用的worker.js
onmessage=function(evt){
var URL = evt.data;
var xmlhttp = new createXMLHTTP();
xmlhttp.open("POST", URL, false);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
var res=xmlhttp.responseText;
postMessage(res);
}
}
xmlhttp.send(null);
};

function createXMLHTTP() {
return new XMLHttpRequest();
}


C#部分

[WebMethod]
public void backuprecovery()
{
BackupRecovery br = new BackupRecovery();
br.Backup();
}


using System.Web.Mvc; //注意引用Mvc

public class BackupRecovery : Controller
{
public string Backup()
{
//根据需求获得路径,注意这个路径是服务器IP+端口+其他
//这个文件一定是发布好的,没有发布获取不了
return 路径;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: