1
我正在使用knockoutjs和mvc5編寫代碼,其中在ui上選擇圖像,並且通過ajax上傳圖像的二進制文件。Ajax和MVC 5 - 通過ajax上傳圖像二進制
我真的不能真正展示周圍的圖片上傳,但我知道它的作品。該圖像位於瀏覽器本地,二進制文件存儲在視圖模型中。
問題是上傳這個二進制文件到mvc。
在我的javascript,我使用的構建後如下:
var customerData = {
CustomerName: self.CustomerName(),
CustomerImage: self.CustomerImage().imageBinary(),
CustomerJobNumber: self.CustomerJobNumber()
};
//If add, enable remaining area, change id, and start customer edit
if (window.location.hash == "#customer-add") {
$.ajax({
type: 'POST',
url: "/Customer/SaveNew",
contentType: 'application/json',
dataType: 'json',
data: JSON.stringify(customerData),
success: function(data) {
/*CODE*/
var title = data.title;
var msg = data.message;
if (data.success == 0) {
//growl as to why
} else {
//growl success
window.location.hash = "#customer-edit-" + data.newCustomer.CustomerId;
self.SetCustomerFields(data.newCustomer);
self.LoadCustomers();
}
},
error: function(err) {
alert(err);
//growl
}
});
}
而在我的控制,我有:
public class NewCustomerData
{
public string CustomerName { get; set; }
public byte[] CustomerImage { get; set; }
public string CustomerJobNumber { get; set; }
}
[HttpPost]
public ActionResult SaveNew(NewCustomerData data)
{
//Does stuff
}
當我打入的JavaScript運行時,CustomerImage對象我發送的是ArrayBuffer類型。如果我將它轉換爲Uint8Array,我可以驗證是否有內容。但二進制文件從不出現在控制器中。
我沒有分配正確的c#對象嗎?
請同時發佈您的看法 –
該視圖是否有必要?我有的問題是使用ajax將ArrayBuffer發佈到控制器。在ajax調用之前我有數據,但它在ajax調用和控制器方法拾取之間的某處消失。 –
您是否檢查過瀏覽器上的網絡選項卡,以驗證服務器上是否存在正確的數據?通常我會在模型中使用HttpPostedFileBase而不是字節[] –