填充下拉列表中的文件列表并在单击时下载

时间:2012-01-25 10:08:31

标签: jquery drop-down-menu

如何使用文件夹中的文件列表填充下拉列表,然后当用户点击他们下载文件的名称时?

 $(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等感谢

3 个答案:

答案 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) }
    }
);