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