0

私の仕事は、ユーザーがimgを参照して保存ボタンをクリックするたびに、動的に画像をデータベースに保存することです。私はasp.net mvc3、razorビューを使用しており、mysqlは私のデータベースです。参照したimgファイルをコントローラーに渡そうとしています。コントローラーで、私はそれをバイト形式に変換してdbに保存しています。しかし、ブレークポイントを置くと、nullが表示され、ファイルがコントローラーに渡されていないことを示しています

以下は私のビューとコントローラーです

$(document).ready(function () {

       $("#photos").kendoUpload(); 
       $("#save").click(function (event) {   
           alert("started");
           url = 'Home/Details'; 
           var b;

           $.ajax({

               type: "POST",

               url: '/Home/Details',
               data: { b: $('#photos').load(url) }, 

               contentType: "application/json; charset=utf-8",
               dataType: "json",
               success: function (str) {
                   alert("hai");
                   alert(str.st);
               }
           });



       });

   });

コントローラ:

     public ActionResult Details(HttpPostedFileBase b)
    {

        try
        {
           b = Request.Files[1];
            byte[] imageSize = new byte[b.ContentLength];
            b.InputStream.Read(imageSize, 0, (int)b.ContentLength);
            Image g = new Image();



            g.Img = imageSize;

            dbContext.Add(g);
            dbContext.SaveChanges();
            return RedirectToAction("Index");
        }
        catch
        {
        }
        var str = new { st = "saved" };
        return Json(str, JsonRequestBehavior.AllowGet);
    }

}
4

2 に答える 2

1

まず、JavaScript セキュリティ モデルに反するため、Ajax を使用してファイルを送信することはできないと思います。ajax の方法で投稿するには、別の方法を使用する必要があります。ajax ファイルのアップロード用の JQuery プラグインを次に示します。

http://www.webdeveloperjuice.com/2010/02/13/7-trusted-ajax-file-upload-plugins-using-jquery/

通常の形式の投稿を使用する場合は、フォーム要素の暗号化プロパティを「multipart/formdata」に設定する必要があります。そうしないと、サーバーはファイル自体ではなくファイル名のみを送信します。

于 2012-05-26T04:26:12.243 に答える
0
  1. 標準の AJAX 経由でファイルをアップロードすることはできません
  2. の戻り値は.load()ロードされたコンテンツではありません - jquery オブジェクトを返します。したがって、画像データではなく、jquery オブジェクトを投稿しようとしています。
于 2012-05-26T04:21:16.943 に答える