Javascript 在单击按钮或超链接时触发从服务器文件夹下载文件

Javascript 在单击按钮或超链接时触发从服务器文件夹下载文件,javascript,jquery,asp.net,webforms,Javascript,Jquery,Asp.net,Webforms,在ASP.NET网络表单中,我必须显示一个链接或按钮,该链接或按钮应根据服务器上的文件夹中是否存在pdf文件而可见或不可见。单击链接或按钮时,应触发从服务器上的文件夹下载文件。代码必须通过来自javascript的rest服务调用来实现。有人能帮我吗,怎么做 我可以读取该文件并将其返回到javascript代码,但如何从那里触发下载。在Asp.Net中,您可以使用 <asp:Repeater> 使用此方法,您可以轻松创建下载pdf按钮 但您希望通过javascript实现。 因此,

在ASP.NET网络表单中,我必须显示一个链接或按钮,该链接或按钮应根据服务器上的文件夹中是否存在pdf文件而可见或不可见。单击链接或按钮时,应触发从服务器上的文件夹下载文件。代码必须通过来自javascript的rest服务调用来实现。有人能帮我吗,怎么做


我可以读取该文件并将其返回到javascript代码,但如何从那里触发下载。

Asp.Net中,您可以使用

<asp:Repeater>
使用此方法,您可以轻松创建下载pdf按钮

但您希望通过javascript实现。 因此,您可以使用Ajax调用下载PDF,如果您想下载不同的PDF,则必须传递唯一的id

As per you requirement this code will helps you.
HTML:

protected void Page_Load(object sender, EventArgs e){
if (!this.IsPostBack)
{
    this.PdfDownlaoder();
}}

private void PdfDownlaoder(){
string connectionString= ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
using (SqlConnection connection = new SqlConnection(connectionString))
{
    using (SqlCommand command= new SqlCommand("SELECT  PDF_Path_Column_Name FROM TAble_Name where userId=Session["userID"]", connection ))
    {
        using (SqlDataAdapter sda = new SqlDataAdapter(command))
        {
            DataTable data= new DataTable();
            sda.Fill(data);
            pdfDownload.DataSource = data;
            pdfDownload.DataBind();
        }
    }
}}
<html>
 <head>
<script src="Scripts/jquery-3.1.1.js"></script>
<script  type="text/javascript">
    $(document).ready(function () {
        $("#pdf").hide();
        $.ajax({
            type: "POST",
            url: "Default.aspx/Check_Pdf",
            contentType: "application/json; charset=utf-8",
            data: "{}",
            dataType: "json",
            success: function (result) {
                debugger
                if (result.d != "n") {
                    $("#pdf").show();
                    $('#pdf').attr('href', result.d);
                }
                else {
                    $("#pdf").hide();
                    alert('No PDF FOUND')
                }
            },
            error: function (req, status, error) {
                alert("Error try again");
            }
        });


    });
</script>

但是我如何用javascript给出服务器上文件夹中文件的路径呢。我所给的道路行不通。它抛出以下错误“不允许加载本地资源”。我已经用转义序列给出了路径,我修改了我的问题。您能根据新的要求提供帮助吗?请稍等,给我一些时间制作另一个代码段。您正在使用哪个控件,或者您能给我看一下代码吗?我正在使用。该文件位于服务器上的文件夹中。但当我在href中直接给出文件夹路径时,它抛出了一个错误——“不允许加载本地资源”。因此,我必须在后端读取文件内容,并将这些信息传递到前端,然后触发下载。
<html>
 <head>
<script src="Scripts/jquery-3.1.1.js"></script>
<script  type="text/javascript">
    $(document).ready(function () {
        $("#pdf").hide();
        $.ajax({
            type: "POST",
            url: "Default.aspx/Check_Pdf",
            contentType: "application/json; charset=utf-8",
            data: "{}",
            dataType: "json",
            success: function (result) {
                debugger
                if (result.d != "n") {
                    $("#pdf").show();
                    $('#pdf').attr('href', result.d);
                }
                else {
                    $("#pdf").hide();
                    alert('No PDF FOUND')
                }
            },
            error: function (req, status, error) {
                alert("Error try again");
            }
        });


    });
</script>
   <body>
   <a id="pdf"  runat ="server" target="_blank" >Download Pdf</a> 

</body></html>
     [System.Web.Services.WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static string Check_Pdf ()
    {
        string mainDirectoryPath = System.Web.HttpContext.Current.Server.MapPath("~/Your_PDF_Folder/");
        var result = string.Empty;
        var path = string.Empty;
        string[] files = System.IO.Directory.GetFiles(mainDirectoryPath, "*.pdf");
         if (System.IO.Directory.Exists(mainDirectoryPath))
        {          
            foreach (var item in files)
            {
                var file = Path.GetFileName(item);
                path = ("/Your_PDF_Folder/" + file);  
            }
            if (path != string.Empty)
            {
                result = path;
              }
            else
            {               
                result= "n";
            }
        }
       return result;
    }