我将文件保存在项目文件夹中
D:\Maarjaa\Marjaa\Content\Uploads
现在我想显示这些文件的名称(不是完整的 URL)
作为
lakes of kaghan.jpg
lakes of gilgit.jpg
不像
D:\Maarjaa\Marjaa\Content\Uploads\lakes of kaghan.jpg
此外,我想提供这些文件的下载链接,以便用户可以下载这些文件
我将文件保存在项目文件夹中
D:\Maarjaa\Marjaa\Content\Uploads
现在我想显示这些文件的名称(不是完整的 URL)
作为
lakes of kaghan.jpg
lakes of gilgit.jpg
不像
D:\Maarjaa\Marjaa\Content\Uploads\lakes of kaghan.jpg
此外,我想提供这些文件的下载链接,以便用户可以下载这些文件
我做到了,在我看来
<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;
许多不同的方法可以做到这一点。这是一个:
为您的文件创建一个类
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>
}
希望这可以帮助您上路。