Tôi có một canvas, mà tôi có thể vẽ vào DOM mà không có một vấn đề cũng như tiết kiệm cho người sử dụng tại địa phương sử dụng:Tải lên HTML5 canvas như một blob
storCanvas.toBlob(function(blob) { saveAs(blob, name + ".png");});
(lưu ý: Tôi đã bao gồm canvas- toBlob.js để hỗ trợ nền tảng chéo, từ http://eligrey.com/blog/post/saving-generated-files-on-the-client-side)
Bây giờ, những gì tôi muốn làm là gửi cùng phần tử canvas đến máy chủ. Tôi nghĩ tôi có thể làm điều gì đó như:
storCanvas.toBlob(function(blob) {upload(blob);});
nơi tải lên (blob); là:
function upload(blobOrFile)
{
var xhr = new XMLHttpRequest();
xhr.open('POST', 'upload_file.php', true);
xhr.onload = function(e) { /*uploaded*/ };
// Listen to the upload progress.
var progressBar = document.querySelector('progress');
xhr.upload.onprogress = function(e) {
if (e.lengthComputable)
{
progressBar.value = (e.loaded/e.total) * 100;
progressBar.textContent = progressBar.value;
}
};
xhr.send(blobOrFile);
}
(cribbed từ: http://www.html5rocks.com/en/tutorials/file/xhr2/)
Bây giờ, tôi nghĩ rằng tôi này sẽ làm việc, nhưng trang PHP của tôi (mà tôi có thể làm một POST để sử dụng thành công một hình thức HTML chuẩn) báo cáo lại (qua firebug) rằng nó có tệp không hợp lệ là 0kB. Tôi cho rằng vấn đề là trong chuyển đổi của tôi thành một đốm màu, nhưng tôi không chắc chắn cách chính xác để đi về nó ...
không đi tuyến đường này. tôi bắt đầu xuống con đường này và nó trở nên phức tạp hơn là suy nghĩ ban đầu. sau khi bạn giải mã base64 vào thùng, bạn vẫn đang thiếu tiêu đề. cũng có thể đi đến tệp hoặc đường dẫn tải lên blob – gesell
@gasell đồng ý! – Dewsworld