2012-01-06 3 views
0

私はサービスとしてそれを消費してmvc apiとコンソールアプリケーションで作業しています。コンソールからmvcにファイルを送信

MVCのコードは次のようになります。

[HttpPost] 
    public ActionResult Index(HttpPostedFileBase file) 
    { 

     if (file.ContentLength > 0) 
     { 
      var fileName = System.IO.Path.GetFileName(file.FileName); 
      var path = System.IO.Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
      file.SaveAs(path); 
     } 

     return RedirectToAction("Index"); 
    } 

私は別のアプローチを試してみましたが、私は、MVCの側で任意のヘルプをfile == null以上のものを得ることはできませんか?

+2

コンソールアプリケーションから要求がどのように行われたかを記述できます(おそらくコードを表示する場合もあります)。 – GolfWolf

+0

はRequest.Filesが入力されていますか? – Pbirkoff

+0

ファイルが実際にメソッドに渡されていることを確認しましたか?そして、長さは実際には0よりも大きいのですか?編集: この[Phil Haackのブログ記事](http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx)はあなたの質問に答えているようです。 – crunchy

答えて

1

私が正しく理解している場合は、コントローラ上でこの特定のメソッドを起動して起動するWebアプリケーションをコンソールアプリケーションから作成しようとしています。

1)お使いのブラウザでメソッドをテスト:

はどんなに問題が何であるか、これはそれをデバッグするための適切な方法ではありません。正しく動作するまでデバッグ/修正してください。 2)正しいhttpリクエスト(フィドラーは、仕事をする必要があります) 3)を盗聴するためのHTTPデバッガを使用するには、コンソールアプリケーション内からWebRequestを使用して、パラメータのセットを模倣することができるようにそのパラメータを作るFidder

を嗅い

が完了しました。

この方法は機能しません。アプリケーションサーバーは、どのクライアントが要求をトリガーするかを知ることができません。ブラウザのリクエストが正しく機能している場合は、WebRequestを使用して同じパラメータセットを再現することができます。また、Fiddler(または同様のもの)は、POSTパラメータを特定するために役立つことがあります。私に

- おそらくあなたは、次のとおりです。

A)(境界) b)はとにかく要求タイプを正しく

を設定していないファイル、間違った(間違ったエンコーディング、ポストパラメータ間の間違ったセパレータ)を通過 - コードを書くことは不可能ですので、私はあなた自身で問題を解決するために使用できるアルゴリズムを提供しています。

関連する問題