2017-11-15 21 views
0

現在、イメージをファイルサーバーにアップロードするMVCアプリケーションで問題が発生しています。MVC5ファイルのアップロードと表示

public ActionResult UploadFile(HttpPostedFileBase file, string newFileName) 
    { 

     try 
     { 
      if (file.ContentLength > 0) 
      { 
       Bitmap bm = new Bitmap(file.InputStream); 
       Bitmap final = new Bitmap(bm, 150, 150); 
       final.SetResolution(72.0F, 72.0F); 

       string _FileName = newFileName + ".jpg"; 
       string _path = Path.Combine(ConfigurationManager.AppSettings["imageDirectory"], _FileName); 
       final.Save(_path,System.Drawing.Imaging.ImageFormat.Jpeg); 
      } 
      ViewBag.Message = "File Uploaded Successfully!!"; 
      return RedirectToAction("Index"); 
     } 
     catch 
     { 
      ViewBag.Message = "File upload failed!!"; 
      return RedirectToAction("Error"); 
     } 
    } 

したがって、ユーザーはファイルを選択し、Windows共有にアップロードします。このコードはIISExpressを使用して私のマシン上で動作し、テストサーバー上で動作します。プロダクションサーバーにデプロイすると、インデックスにリダイレクトされてもファイルサーバー上でファイルが変更されないという点で動作しているようです。

IISExpress、テストサーバー、および運用サーバーは、すべて同じファイルディレクトリを指しています。

これをトラブルシューティングする際に遭遇したもう1つの問題は、アプリケーションのFQDNを使用するときにファイルサーバーからのイメージが表示されないことです。したがってhttp://[appName].[domain].[com]は画像を表示できませんが、http://[appName]は画像を表示します。テストではまったく表示されなかった別の奇妙な問題です。

答えて

1

ここに問題と解決策があります。
開発システムで動作する場合は、app_dataフォルダへの読み書きアクセス権が与えられていないという問題があります。 HttpPostedFileBaseは常にファイルをApp_Storeに一時的にアップロードし、そこからSave()メソッドがファイルを取得します。 App_Dataフォルダがない場合は作成してください。サーバー上のIIS_USERSへの完全なReadWriteアクセスを提供する必要があります。

関連する問題