如何使用文件夹中的文件列表填充下拉列表,然后当用户点击他们下载文件的名称时?
$(document).ready(function () {
$("#2").empty();
$("#3").empty();
$("#4").empty();
$btn1.hide();
$.ajax({
url: '/uploads/docs/' + "name" + ".pdf",
type: 'HEAD',
error: function () {
},
success: function () {
e.preventDefault();
window.location.href = '/uploads/docs/' + "name" + ".pdf";
}
});
});
我有这个可以查看文件夹,但只有一个pdf名称,如果它存在,它下载PDF格式下载。但是我如何填充下拉列表并使用它?我需要让用户能够下载任何类型的文件.jps .exe等感谢
答案 0 :(得分:1)
你可以做到
<select id=yourSelect>
<option value="">Choose a file</option>
<option>File1</option>
<option>File2</option>
<option>File3</option>
</select>
$('#yourSelect').change(function() {
var name = this.value;
if (name !== "") {
if (confirm("Are you sure you want to download " + name)) {
$.ajax({
url: '/uploads/docs/' + name + ".pdf",
type: 'HEAD',
error: function() {},
success: function() {
e.preventDefault();
window.location.href = '/uploads/docs/' + name + ".pdf";
}
});
}
}
});
在这里小提琴。 http://jsfiddle.net/G4wJV/
当您选择第一个选项时,会尝试下载/uploads/docs/File1.pdf
,依此类推
答案 1 :(得分:1)
我认为最简单的方法是使用属性File Name&amp;创建一个模型。文件路径。(或者您可以使用具有这些属性的匿名类型)
public class File
{
public string FileName { get; set; }
public string FilePath { get; set; }
}
使用Controler中的数据
创建文件集合ViewBag.FileCollection = "your file collection";
然后在你的视图中使用Html.DropDownList:
@Html.DropDownList("Files", new SelectList(ViewBag.FileCollection, "FilePath", "FileName"))
Nicola Peluchetti的答案有客户端代码。
答案 2 :(得分:0)
如果目录的内容经常发生变化,你肯定要在服务器端做一些工作。
使用PHP,您将创建一个脚本,该脚本首先使用opendir()
和readdir()
读取目录中的所有文件。您可能希望将目录中的所有文件读入数组,然后使用sort()
按字母顺序对它们进行排序,因为它们不会按字母顺序排列。然后脚本以HTML格式输出文件列表 - 例如,使用<table>
或<ul>
,您可以在其中放置标准文件下载链接(<a>
标记)。
然后使用AJAX加载PHP文件的输出,并将其插入页面。
$.ajax(
{
url:'/uploads/ajax.php',
success: function(d) { $("#filelist-container").html(d) }
}
);