記事詳細


投稿日
2026年06月10日06時30分
タイトル

ASP.NET MVC:Viewから送られたstring "交際費.png"をController(create action method)でstring"Images/交際費.png"にするC#コードを教えてください。

内容

了解です。
ASP.NET MVC で View から送られた "交際費.png" を Controller の Create アクションで "Images/交際費.png" に変換するには、単純に文字列結合すればOKですが、パス結合は Path.Combine を使うのが安全です。

以下は安全で実用的なサンプルコードです。

Csharp
using System; using System.IO; using System.Web.Mvc; public class ExpenseController : Controller { [HttpPost] public ActionResult Create(string fileName) { // 入力チェック if (string.IsNullOrWhiteSpace(fileName)) { ModelState.AddModelError("", "ファイル名が空です。"); return View(); } // 不正なパス文字を除去(セキュリティ対策) fileName = Path.GetFileName(fileName); // "Images/交際費.png" のような相対パスを作成 string relativePath = Path.Combine("Images", fileName).Replace("\\", "/"); // 必要に応じてサーバー上の物理パスに変換 string physicalPath = Server.MapPath("~/" + relativePath); // ここでファイル保存やDB登録などの処理を行う // 例: System.IO.File.SaveAs(physicalPath) など ViewBag.FilePath = relativePath; // View に渡す例 return View("Result"); } }

ポイント

  1. Path.GetFileName
    • ユーザーが "../../悪意あるファイル" のようなパスを送っても、ファイル名部分だけを安全に抽出します。
  2. Path.Combine
    • OS依存の区切り文字を自動で処理します。
  3. Replace("\\", "/")
    • Webパスとして使う場合は / に統一します。
  4. Server.MapPath
    • 相対パスをサーバー上の物理パスに変換できます(保存や読み込み時に必要)。

✅ このコードなら、
入力 "交際費.png" → 出力 "Images/交際費.png"
が安全に実現できます。

もしこの "Images/交際費.png" を 物理保存パス としても使いたい場合は、上記の physicalPath をそのまま使えばOKです。

必要であれば、この処理を ViewModel 経由で受け取る方法 も書けますが、そちらも載せますか?
そうすればフォームの他のデータと一緒に安全に受け取れます。

Powered by Froala Editor

添付画像

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