【问题标题】:Triggering download of file from server folder on click button or hyperlink单击按钮或超链接触发从服务器文件夹下载文件
【发布时间】:2017-02-03 08:39:57
【问题描述】:

在 ASP.NET 网络表单中,我必须根据服务器上的文件夹中是否存在 pdf 文件来显示应该可见或不可见的链接或按钮。单击链接或按钮后,应触发从服务器上的文件夹下载文件。代码必须通过来自 javascript 的 rest 服务调用来实现。有人可以帮助我,如何做到这一点?

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

【问题讨论】:

    标签: javascript jquery asp.net webforms


    【解决方案1】:

    Asp.Net 中您可以使用

    <asp:Repeater>
    

    使用&lt;asp:Repeater&gt;你可以创建下载按钮,但你必须使用

    '&lt;%# Eval("PDF_Path_Column_Name") %&gt;' 在 asp 中继器内。 Eval 用于绑定到设置为只读的 UI 项。

    示例:

    HTML:

    <asp:Repeater id="pdfDownload" runat="server"> <a id="PDF" runat="server" href="<%# Eval("PDF_Path_Column_Name") %>"> Download PDF<a/></asp:Repeater>
    

    用于绑定中继器的 C#:

    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();
            }
        }
    }}
    

    使用此方法您可以轻松创建下载pdf按钮

    但您想通过 javascript 实现。 所以你可以使用 Ajax Call 来下载 PDF,如果你想下载不同的 PDF,那么你必须传递一个唯一的 id。

    【讨论】:

    【解决方案2】:
    As per you requirement this code will helps you.
    

    HTML:

    <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>
    

    C#

         [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;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2017-08-11
      • 1970-01-01
      相关资源
      最近更新 更多