2017-11-19 62 views
0

ちょっと写真をアップロードしてその画像をフォルダに保存し、その画像の名前をDBに保存すると同時に、他のフォームフィールドのモデルバインディングも使用したいと思います。ここでは、このHttpPostedFileBaseファイルのコードがnullを受け取っています。私のフォームにenctype = "multipart/form-data"も使用しています。また画像をアップロードするASP.NET MVC

public ActionResult UmrahPackage(PackagesModel model, , HttpPostedFileBase file) 
    { 
     try 
     { 
      if (model.ID == 0) 
      { 
       String fileName = ""; 
       Pakage pkg = new Pakage(); 
       pkg.Title = model.Title; 
       pkg.PackageDetail = model.PackageDetail; 
       pkg.Duration = model.Duration; 

       if (file != null) 
       { 
        fileName = System.Guid.NewGuid().ToString() + System.IO.Path.GetExtension(file.FileName); 
        string physicalPath = Server.MapPath("~/Images/Uploads" + fileName); 
        // save image in folder 
        file.SaveAs(physicalPath); 
       }} 

また、私はこれをしようとしていますが、私はどのようにフォルダ内の画像を保存する私は名前を付けて保存する前にオブジェクトのインスタンスを意味することを理解することはできないのです - 私の形が見える>ファイル

if (Request.Files.Count > 0 && String.IsNullOrEmpty(Request.Files[0].FileName) == false) 
       { 
        HttpPostedFileBase file; 
        fileName = System.Guid.NewGuid().ToString() + System.IO.Path.GetExtension(Request.Files[0].FileName); 
        string physicalPath = Server.MapPath("/uploads/profileimages/") + fileName; 
        file.SaveAs(physicalPath); 
       } 

@using (Html.BeginForm("UmrahPackage", "Home", FormMethod.Post, new { enctype = "multipart/form-data"})) 
       { 
        @Html.HiddenFor(model => model.ID) 

        <label>Title:</label> 
        @Html.TextBoxFor(model => model.Title) 

        <label>Upload Image</label> 
        <input type="file" id="imgInp"> 

        <button type="submit" >Create</button> 
       } 

おかげさまで、ありがとうございました。

+0

フォームコードはどのように見えますか? – Shyju

+0

更新したので、私のビューコードを見ることができます。 –

答えて

0

ご入力要素name属性値は、あなたのHttpPostedFileBaseパラメータ名がfileあるので、あなたのファイルの入力のために同じ名前を付け

あなたのパラメータ名と一致する必要があります。フォームが送信された今

<input type="file" name="file" /> 

、モデルバインダーは、私はまた、あなたがPath.Combineの代わりに、文字列の連結を使用することをお勧め

fileという名前のパラメータにあなたの送信されたフォームデータをマッピングすることができるようになります。

string physicalPath = Path.Combine(Server.MapPath("~/Images/Uploads"), fileName); 
関連する問題