2

我将文件保存在项目文件夹中

D:\Maarjaa\Marjaa\Content\Uploads

现在我想显示这些文件的名称(不是完整的 URL)

作为

lakes of kaghan.jpg
lakes of gilgit.jpg

不像

D:\Maarjaa\Marjaa\Content\Uploads\lakes of kaghan.jpg

此外,我想提供这些文件的下载链接,以便用户可以下载这些文件

4

2 回答 2

3

我做到了,在我看来

 <ul>
            @foreach(var Item in(IEnumerable<Marjaa.Data.MultimediaFile>) ViewData["Files"]) 
            {

               <li><a href=" @Url.Content("~/Content/Uploads/" + System.IO.Path.GetFileName(Item.MultimediaFileUrl))">@System.IO.Path.GetFileName(Item.MultimediaFileUrl)</a> </li>
             }                
            </ul>

从我的控制器刚刚发送了一个列表来查看

IList<MultimediaFile> list = d.MultimediaFiles.Where(l => l.MultmediaId == id).ToList();
        ViewData["Files"] = list;
于 2013-02-04T14:01:02.220 回答
3

许多不同的方法可以做到这一点。这是一个:

为您的文件创建一个类

public class Image
        {
            public string Name { get; set; }
            public string Path { get; set; }
        }

和一个视图模型类

public class ViewModel
        {
            public List<Image> Images { get; set; }
            public string Path { get; set; }
        }

然后在您的控制器中,为列表中的每个 Image 对象填充视图模型以及名称和路径属性。您需要导入 System.IO 命名空间。

public ActionResult DisplayFilesForDownload( )
        {
            var viewModel = new ViewModel
            {
                Path = @"D:\Maarjaa\Marjaa\Content\Uploads", 
                Images = new List<Image>()
            };
            var paths = Directory.GetFiles(viewModel.Path).ToList();
            foreach (var path in paths)
            {
                var fileInfo = new FileInfo( path );
                var image = new Image
                {
                    Path = path, Name = fileInfo.Name
                };
                viewModel.Images.Add(image);
            }
            return View( viewModel);
        }

以及允许下载的方法。我假设你所有的文件都是图像。如果没有,只需根据需要调整 MediaTypeName。

public FileResult Download(string filePath, string fileName)
        {
            var file = File(filePath, System.Net.Mime.MediaTypeNames.Image.Jpeg, fileName);
            return file;
        }

最后是视图。Image.Name 用于显示缩短的文件名,Image.Path 用于告诉下载方法从哪里获取文件。

@model FullyQualified.Path.ToYour.ViewModel

@foreach (var image in Model.Images)
{
    <p>@Html.ActionLink(image.Name, "Download", "ControllerName", new{filePath = image.Path, fileName = image.Name}, null)</p>
}

希望这可以帮助您上路。

于 2013-01-30T16:51:53.587 回答