我試圖使用組件(slim image cropper)來裁剪圖像,然後通過Web API將原始圖像和裁剪版本發送到我的服務器。我的問題在於,我將數據作爲Blob數組獲取(第一個元素是原始數據,第二個元素是裁剪的),我完全不知道如何發送該數據,或者如何將其轉換爲能夠將其發送給我API。將blob發送到ASP.NET Web API
我使用javascript函數而不是直接服務調用來傳遞更多參數,由組件支持並記錄爲here。
這裏的功能:
var uploadImage = function (formdata, progress, success, failure) {
var originalArray;
var croppedArray;
var apiCall = function (original, cropped) {
var params = {
name: formdata[0].name,
original,
cropped,
id: $('hidId').val()
}
$.getJSON('/api/Test/UploadImage', params, function (response) {
if (response) {
if (response.Success == true) {
success('Upload réussi')
} else {
failure('Upload échoué')
}
} else {
failure('Pas de réponse de l\'API')
}
});
};
var originalReader = new FileReader();
originalReader.onloadend = function() {
originalArray = originalReader.result;
if (originalArray != null && croppedArray != null)
apiCall(originalArray, croppedArray);
};
originalReader.readAsArrayBuffer(formdata[0]);
var croppedReader = new FileReader();
croppedReader.onloadend = function() {
croppedArray = croppedReader.result;
if (originalArray != null && croppedArray != null)
apiCall(originalArray, croppedArray);
};
croppedReader.readAsArrayBuffer(formdata[1]);
}
我知道它必須尋找粗略的,但我沒有經驗,這種情況下,在所有。當我到達$ .getJSON(...)行時,控制檯中出現404錯誤,顯示只傳遞了「name」參數。
以防萬一它是相關的,這是我的API方法簽名:
public IHttpActionResult UploadImages(string name, byte[] original, byte[] cropped, Guid id)
{
...
}
我怎麼能解決這個問題併發送圖片? api端應該是什麼參數類型?
我通常以'form'具有'ENCTYPE =「多部分/格式數據」'屬性(可以通過AJAX提交)做到這一點,在服務器側接受它作爲一個'HttpPostedFileBase'型https://msdn.microsoft.com/en-us/library/system.web.httppostedfilebase(v=vs.110).aspx –