記事詳細


投稿日
2025年11月11日23時51分
タイトル

Imageファイルを一括ダウンロード

内容

ASP.NET MVC で自サイトの myImage フォルダ内にある複数の PNG ファイルをまとめてダウンロードできるようにしたいのですね。
この場合、サーバー側で ZIP にまとめて返すのが一般的です。

以下は サンプルコード(C#)です。

1. コントローラー側(ZIP生成して返す)

Csharp
using System.IO; using System.IO.Compression; using System.Web.Mvc; public class DownloadController : Controller { public ActionResult Images() { // myImage フォルダのパス string imageFolder = Server.MapPath("~/myImage"); string[] files = Directory.GetFiles(imageFolder, "*.png"); // メモリ上で ZIP 作成 using (var memoryStream = new MemoryStream()) { using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { foreach (var filePath in files) { var entry = zip.CreateEntry(Path.GetFileName(filePath)); using (var entryStream = entry.Open()) using (var fileStream = System.IO.File.OpenRead(filePath)) { fileStream.CopyTo(entryStream); } } } memoryStream.Position = 0; return File(memoryStream.ToArray(), "application/zip", "images.zip"); } } }

2. ビュー側(ダウンロードリンク)

Html
<a href="@Url.Action("Images", "Download")">画像をまとめてダウンロード</a>

ポイント

  • Server.MapPath("~/myImage") でアプリ内のフォルダを取得。
  • Directory.GetFiles(..., "*.png") で PNG のみ取得。
  • System.IO.Compression.ZipArchive を使って ZIP をメモリ上で生成。
  • File() メソッドで ZIP を返すことで、ブラウザがダウンロードを開始。

Powered by Froala Editor

添付画像

画像はありません
Genreのカテゴリ-名
Controllers
編集 | 記事一覧