我的任务是在用户浏览img并单击“保存”按钮时动态地将图像保存到数据库中 我使用asp.net mvc3,razor视图和mysql是我的数据库 我试图将浏览的img文件传递给控制器,在控制器中我将其转换为字节格式 并将其保存到db.But当我放置一个braekpoint它显示为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);
}
}
答案 0 :(得分:1)
首先,我认为您不能使用Ajax提交文件,因为它违反了JavaScript安全模型。您将需要使用其他方式将其发布为ajax方式。以下是ajax文件上传的一些JQuery插件:
http://www.webdeveloperjuice.com/2010/02/13/7-trusted-ajax-file-upload-plugins-using-jquery/
如果你想使用普通表格帖子那么你必须将表格元素的加密属性设置为“multipart / formdata”,否则服务器只发送文件名而不是文件本身。
答案 1 :(得分:0)
.load()
的返回值不是加载的内容 - 它返回jquery对象。所以你试图发布jquery对象,而不是图像数据。