質問

ユーザーがファイルをアップロードできるページをまとめようとしています。データベースに移動します。

私はチュートリアルをフォローしていますが、これまでのところ私のコントローラー方法は次のようになります。

public ActionResult Index()
{
    ViewData["Message"] = "File Upload";
    foreach (string upload in Request.Files)
    {
        if (!Request.Files[upload].HasFile()) continue;
        string path = AppDomain.CurrentDomain.BaseDirectory + "uploads/";
        string filename = Path.GetFileName(Request.Files[upload].FileName);
        Request.Files[upload].SaveAs(Path.Combine(path, filename));
    }

    return View();
}

これも私の見解がどのように見えるかの例です。

<p>
    <% using (Html.BeginForm("", "home", FormMethod.Post, new { enctype = "multipart/form-data" }))
       { %>
    <input type="file" name="FileUpload1" /><br />
    <input type="submit" name="Submit" id="Submit" value="Upload" />
    <% } %>
</p>

ただし、現在2つのコンパイルエラーが発生しています。

  1. 'System.web.httppostedfilebase'には「Hasfile」の定義が含まれておらず、拡張メソッド「Hasfile」は「system.web.httpostedfilebase」の最初の引数を受け入れます(ディレクティブまたはアセンブリリファレンスを使用している場合はありませんか? ?)
  2. 「パス」という名前は現在のコンテキストには存在しません

また、コントローラーの名前空間に使用しているものの例もあります。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.UI.WebControls;

誰かがこのエラーを修正するために私を正しい方向に向けることができれば、私は非常に感謝しています。

役に立ちましたか?

解決

私はそれを見つけたと思います チュートリアル あなたはフォローしていましたか?

その場合 - 著者がHasFile()メソッドのカスタム拡張メソッドを作成した部分を確認してください。それはフレームワークの一部ではないので、それを作成する必要があります。

2番目の問題は、PathがSystem.io Namespaceの一部であるため、それを追加する必要があることです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top