Tôi gặp sự cố khi tải lên một blob được tạo bằng javascript vào máy chủ của tôi. Ý tưởng cơ bản là một người dùng tải lên một hình ảnh và trong javascript tôi trung tâm cắt hình ảnh và rút gọn nó trước khi truyền.JavaScript Blob Tải lên với FormData
Thao tác hình ảnh đang hoạt động tốt, nhưng bản tải lên không hoạt động chính xác. Đây là mã mà không được tải lên và chuyển đổi từ vải để Blob
function uploadCanvasData()
{
var canvas = $('#ImageDisplay').get(0);
var dataUrl = canvas.toDataURL("image/jpeg");
var blob = dataURItoBlob(dataUrl);
var formData = new FormData();
formData.append("file", formData);
var request = new XMLHttpRequest();
request.onload = completeRequest;
request.open("POST", "IdentifyFood");
request.send(formData);
}
function dataURItoBlob(dataURI)
{
var byteString = atob(dataURI.split(',')[1]);
var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++)
{
ia[i] = byteString.charCodeAt(i);
}
var bb = new Blob([ab], { "type": mimeString });
return bb;
}
Máy chủ tuyên bố rằng không có tập tin đã được tải lên, và khi tôi sử dụng chrome để kiểm tra theo yêu cầu, tôi thấy các tải trọng theo yêu cầu như:
------WebKitFormBoundaryyzYbm61DKgS09tpB
Content-Disposition: form-data; name="file"
[object FormData]
------WebKitFormBoundaryyzYbm61DKgS09tpB--
Ngược lại với các tải trọng của một hình thức được nộp cùng với input type="file"
------WebKitFormBoundaryUOn3WXb7pKLmOxRZ
Content-Disposition: form-data; name="imagefile"; filename="-3YQHiVaGWo.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryUOn3WXb7pKLmOxRZ--
Vì vậy, có vẻ với tôi như XMLHttpRequest chỉ được tải lên kết quả của cal ling blob.toString()
Có ai biết tôi đang làm gì sai ở đây không? Có cách nào tốt hơn tôi nên sử dụng?
Xin cảm ơn người đàn ông về hàm dataURItoBlob. Tải lên hình ảnh không hoạt động đúng với chỉ Blob mới ([window.atob (png)], {type: 'image/png'}); –