2016-05-19 3 views
1

私はAndroidアプリケーションのバックエンドサービスを開発しています。バックエンドはASP.NET Web Apiで開発されています。ASP.NET Web APIにファイルを含むモデルをアップロードしてバインドするためのベストプラクティス

今、私のモデルをバインドするの問題が発生しました。私は、Name,Ageのような典型的なフィールドを持つUserモデルを持っています。JSONの形式でアプリケーションからデータを送信しています。これは私のUserモデルに完全に縛られています。

は、しかし、今私は、プロフィール画像である私のUserクラスに別のフィールドを追加する必要があります。バイト配列に変換すればJSON経由で画像ファイルを送ることができますが、それは良いアプローチですか?

私が考えることができる別の方法は、モデルと画像ファイルを個別にに送信することです。次に、画像のGUIDUserモデルのプロフィール画像フィールドに関連付けます。画像ファイルのアップロードが明らかにUser JSONファイルより遅いので、私はUser JSONを受信して​​、新しいUserを初期化時点で、ファイルがまだアップロードし、したがってチャンスがないかもしれないので、しかし、これはまた、意味がありませんそれからGUIDを取得する

誰もがこれに対して良いデザインを提案できますか?私は、これがユーザーアカウント管理を含むあらゆるサービスの非常に共通の機能だと考えています。それはどのようにして正常に行われますか?私は[]バイトを送信すると思う

+0

は、より良いアプローチです。 –

+0

こんにちはコメントをいただきありがとうございます。なぜあなたはそれをお勧めしますか?バイト配列に変換しないとサイズが大きくなりますか? –

答えて

0

HTML

@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 
     <input type="file" name="file" /> 
     <input type="submit" value="OK" /> 
    } 

コントローラ

public class HomeController : Controller 
{ 
    // This action renders the form 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    // This action handles the form POST and the upload 
    [HttpPost] 
    public ActionResult Index(HttpPostedFileBase file) 
    { 
     // Verify that the user selected a file 
     if (file != null && file.ContentLength > 0) 
     { 
      // extract only the filename 
      var fileName = Path.GetFileName(file.FileName); 
      // store the file inside ~/App_Data/uploads folder 
      var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName); 
      file.SaveAs(path); 
     } 
     // redirect back to the index action to show the form once again 
     return RedirectToAction("Index");   
    } 
} 
+2

申し訳ありませんが、私の質問には答えられません。私は、ユーザーモデル、デザインと一緒に画像をバインドする方法を探しています。 –

関連する問題