これを行うための多くの異なる方法。これが1つです:
ファイルのクラスを作成します
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>
}
これがあなたの道を進むのに役立つことを願っています。