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

これを行うための多くの異なる方法。これが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>
}

これがあなたの道を進むのに役立つことを願っています。

于 2013-01-30T16:51:53.587 に答える
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 に答える