2016-05-30 15 views
0

初めてWebサーバーにMVC Webサイトをアップロードしています。ファイルアップロードオプション以外はすべてうまくいった。私は、ファイルをアップロードしようとするたびに、それは私を促し、このエラー:mvcでファイルをアップロードできません

The SaveAs method is configured to require a rooted path, and the path '' is not rooted.

エラーの詳細は何とか私は私のローカルマシン上に作成された私のプロジェクトのパスを示しています。

System.Web.HttpException (0x80004005): The SaveAs method is configured to require a rooted path, and the path '' is not rooted. at Printrpk.Controllers.ProductController.Create(ProductModels product) in C:\Projects\Carting\Carting\Carting\Controllers\ProductController.cs:line 145

私のコードが間違っているかどうかを確認するために複数の方法を試しましたが、動作させることができませんでした。

これは私が任意の画像をアップロードしていない場合は、このコントローラは正常に動作しますアクション

foreach (string fileName in Request.Files) 
{ 
    HttpPostedFileBase file = Request.Files[fileName]; 
    fName = file.FileName; 
    if (file != null && file.ContentLength > 0) 
    { 
     var originalDirectory = new DirectoryInfo(string.Format("{0}images", Server.MapPath(@"/"))); 
     var pathString = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ProductImages"); 
     var filename = Path.GetFileName(file.FileName); 

     bool isExists = System.IO.Directory.Exists(pathString); 
     if (!isExists) 
     { 
      System.IO.Directory.CreateDirectory(pathString); 
     } 

     path = string.Format("{0}//{1}", pathString, filename); 
     file.SaveAs(path); 
    } 
} 

を作成の下に書かれているものです。すでにweb-serverを指しているweb.configを確認しました。

これは、仮想パスに対応する物理パスを取得するために私のベースフォルダ

+0

あなたはAppDomain.CurrentDomain.BaseDirectoryの値をチェックしていますか? – DanielVorph

+3

'Server.MapPath()'を使用します。 'var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath( "〜/ ProductImages")、fileName); file.SaveAs(path); ' –

+0

@StephenMuecke私はすでにこれを試しました。動作しません。奇妙な – ashhad

答えて

3

使用Server.MapPath()Createビュー

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

また、私はすでにターゲットにしたフォルダに含まれています。

var fileName = Path.GetFileName(file.FileName); 
var path = Path.Combine(Server.MapPath("~/Images/ProductImages"), fileName); 
file.SaveAs(path); 

そして、あなたはアプリProductImagesという名前のサブフォルダが含まれているImagesという名前のフォルダが含まれていると仮定すると、サイドノート:それは選択されたファイル(またはより良いとバインドされているように、POSTメソッドあなたにパラメータIEnumerable<HttpPostedFileBase> fileを追加することを検討し、などということが含まあなたのビューモデルのプロパティ)を使用するのではなく、Request.Files

関連する問題