2010-08-23 79 views
0

我有一个表单,用户可以将图像上传到网站。图像以二进制形式存储在表格中。使用asp.net 4.0将图像保存到Sql Server数据库表中ajax

我在网站上使用ajax和JQuery,它永远不会重新加载,所以当用户输入数据并推送提交时,页面不会重新加载。相反,我使用ajax将数据上传到服务器。

当我刚直通文本,它看起来是这样的:

$("#storeDataAndImgBtn").bind("click", function() { 
    var msg = $("#emailMsg").val(); 
    var from = $("#fromEmail").val(); 
    $.ajax({ 
     type: "POST", 
     url: "Default.aspx/storeDataAndImg", 
     data: "{\"from\":\"" + from + "\" ,\"msg\":\"" + msg + "\" ,\"value\":\" 'image should be here' \" }", 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function (temp) { 
      alert(temp.d); 
      $("#mailForm").fadeOut(function() { 
       $("#overlay").fadeOut(); 
      }); 
     } 
    }); 
    return false; 
}); 

我的问题是我怎么能直通图像,这样我可以把它存储在数据库中?

回答

1

我假设图像仅仅是一个Input Type="File"。如果是这种情况,由于安全原因,您无法使用Ajax访问输入字段。我相信最好的解决方案是使用IFrame作为提交目标。它不漂亮,但它的工作原理。

SOF - How to make Asynchronous(AJAX) File Upload using iframe

你的另一种选择是使用闪存/ Silverlight的/等插件。我目前正在使用SWFUpload。

SWFUpload

+0

我去了SWFUpload,效果很棒! – Mikael 2010-08-24 23:27:16

0

如果可能,我会建议不要将图像存储在数据库中。而是将图像存储在服务器的文件系统上。

这里指类似/相关的问题: store image in database or in a system file?

+0

好了,所以说其实我改变,让我将图像存储到服务器上的文件系统来代替。我如何(无需重新加载页面,发表文章)将图像存储到文件系统中? – Mikael 2010-08-23 16:44:22

+0

嗯,使用阿贾克斯这并不是真的发生在盒子外面;但你可以在这里找到你需要的东西:http://geekswithblogs.net/rashid/archive/2007/08/01/Create-An-Ajax-Style-File-Upload.aspx以及类似的问题/答案在这里:http ://sackoverflow.com/questions/254831/asp-net-free-ajax-file-upload-control – 2010-08-23 19:00:28