JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 将HTML5画布上传到Blob大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个画布,我可以绘制DOM,没有问题,以及为本地用户保存:
storCanvas.toBlob(function(blob) { saveAs(blob,name + ".png");});

(注意:从http://eligrey.com/blog/post/saving-generated-files-on-the-client-side开始,我已经包含了用于跨平台支持的canvas-toBlob.js)

现在,我想做的是将相同的canvas元素发送到服务器.我以为我可以做一些像:

storCanvas.toBlob(function(blob) {upload(blob);});

其中upload(blob);是:

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);

}

(从http://www.html5rocks.com/en/tutorials/file/xhr2/起)

现在,我以为我会这样工作,但我的PHP页面(我可以做一个POST成功使用标准的HTML表单)报告(通过firebug)它有一个无效的文件0kB.我认为这个问题是在我的转换到一个blob,但我不知道正确的方法去吧?

解决方法

当我自己学习斑点时,遇到同样的问题.我相信问题在于通过XMLHttpRequest提交blob本身,而不是将其放在FormData中:
canvas.toBlob(function(blob) {
  var formData = new FormData(); //this will submit as a "multipart/form-data" request
  formData.append("image_name",blob); //"image_name" is what the server will call the blob
  upload(formData); //upload the "formData",not the "blob"
});

希望这可以帮助.

大佬总结

以上是大佬教程为你收集整理的javascript – 将HTML5画布上传到Blob全部内容,希望文章能够帮你解决javascript – 将HTML5画布上传到Blob所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: