javascript - 将生成的 Canvas 图像发送到网站服务器?

标签 javascript ajax html canvas

我正处于定制杯子电子商务网站的开发阶段。我正在研究个性化功能,以便我的客户可以设计自己的杯子。一切都快结束了。我可以预览、打印和导出 Canvas 图像,如下所示:https://metaldepot.americommerce.com/Designer/index.html 单击导出按钮时,可以生成图像并将其下载到用户计算机。但是,我希望生成 Canvas 图像并将其上传到我的网站服务器。这是我目前在 index.html 文件和 app.js 文件中为导出按钮编写的代码

app.js:

  // export as DESIGN

  $('.export').click(function(){
    //hide options
    $('#printable').find('i').css('display', 'none');
    $('#printable').find('.ui-icon').css('display', 'none');
    //get printable section
    var exportCanvas = document.getElementById('printable');
    //get convas container
    var canvasContainer = document.getElementById('convascontent');
    //export canvas to convascontainer
    html2canvas(exportCanvas, {
      //when finished fucntion
      onrendered: function(canvas) {
        // initialize canvas container (if we generate another canvas)
        $('#convascontent').html(' ');
        // append canvas to container
        canvasContainer.appendChild(canvas);
        //add id attribute to the canvas
        $('#convascontent').find('canvas').attr('id','mycanvas');
        // display options again
        $('#printable').find('i').css('display', 'block');
        $('#printable').find('.ui-icon').css('display', 'block');
        //document.getElementsByTagName("UL")

      }
    });
    // return false;
  });

  //export options
  $('.exportas').click(function(){
    // get type to export
    var to = $(this).data('type');
    // alert(to);
    // get our canvas
    var oCanvas = document.getElementById("mycanvas");  
    // support variable
    var bRes = false;
    if(to == 'png'){
      // export to png 
      bRes = Canvas2Image.saveAsPNG(oCanvas);
    }
    if(to == 'jpg'){
      // maybe in some old browsers it works only on Firefox
      bRes = Canvas2Image.saveAsJPEG(oCanvas);
    }if(to == 'bmp'){
      Res = Canvas2Image.saveAsBMP(oCanvas);
    }
    // if browser doesn't support mimetype alert user
    if (!bRes) {
      alert("Sorry, this browser is not capable of saving " + strType + " files!");
      return false;
    }
  });

index.html

 <!-- export option (png, jpg, bmp) -->
            <li>
              <div class="btn-group dropup">
                <a class="dropdown-toggle export btn" data-toggle="dropdown" href="#">
                  Export
                  <span class="caret"></span>
                </a>

                <ul class="dropdown-menu">
                  <li>
                    <a href="#" class="exportas" data-type='png'>PNG</a>
                    <a href="#" class="exportas" data-type='jpg'>JPG</a>
                    <a href="#" class="exportas" data-type='bmp'>BMP</a>

如有任何帮助,我们将不胜感激,感谢您抽出宝贵时间!

最佳答案

您可以获取内容,并通过ajax发送到服务器。

  $('.save').click(function(){
    // get our canvas
    var oCanvas = document.getElementById("mycanvas");  
    var data = oCanvas.toDataURL(); // default png
    // var data = oCanvas.toDataURL('image/jpeg'); // for jpg 

    $.post('/url_to_upload', { customer : 'id', data : data });
  });

现在,服务器端 - 发布的变量包含如下数据

"data:image/png;base64,/9j/4AAQS....."

用第一个逗号 ',' 分隔,并解码 base64。然后保存到 DB 或 FS 或..任何你想要的地方。

关于javascript - 将生成的 Canvas 图像发送到网站服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486079/

相关文章:

javascript - 用其内容替换父元素

javascript - 使用正则表达式重命名对象数组的键

javascript - TypeScript requirejs 加载外部模块的问题

javascript - 在 JavaScript 中获取 float 的长度

javascript - 这段jquery ajax代码正确吗?

javascript - js/jquery 不支持 ajax 数据

javascript - Rails 每次点击创建多个购物车记录

c# - 使用 AngleSharp 获取和下载图片

html - 行在 Bootstrap 中被长列压低

html - 我希望我的表连接在顶部 (css/html)