2010-08-23 76 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