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

本文介绍了一种从前端向后端请求文件路径并下载文件的方法。通过点击按钮触发JavaScript函数,利用layer.js显示等待动画,开辟新线程进行文件路径请求,并最终下载文件。涉及C#与JavaScript跨平台交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  从服务器下载文件到本地,即前端向后端请求文件路径,然后打开该路径。
  个人感觉这个方法不是很安全,但目前没找到可以完全实现的其他方法。
  具体实现方法为:
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 路径;
    }
}

  
  
  下载完整代码Js_Csharp_UploadDownload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值