0

我的任务是将图像动态保存到数据库中,每当用户浏览 img 并单击保存按钮时,我正在使用 asp.net mvc3、razor 视图和 mysql 是我的数据库,我正在尝试将浏览的 img 文件传递​​给控制器​​并在那里在控制器中,我将其转换为字节格式并将其保存到数据库中。但是当我放置一个braekpoint时,它显示为空,表明该文件没有传递给控制器​​,有人可以帮我解决这个问题吗

下面是我的视图和控制器

$(文档).ready(函数 () {

       $("#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

首先,我认为您不能使用 Ajax 提交文件,因为它违反 JavaScript 安全模型。您将需要使用其他方式来发布它 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 回答