用PHP将网页上的Canvas图像保存到服务器上的方法

  • 8

在几年前HTML5还没有流行的时候,我们的项目经理曾经向我提出这样一个需求:让项目评审专家们在评审结束时用笔在平板电脑上进行电子签名。 这需要我们评审软件里提供这样一个功能:打开浏览器,登录,进入评审意见页,页面最下部有个方块区域,用户在这里用触摸笔进行签名,然后这个签名将会保持 的服务器上。

这样的一个需求在当时是让我大费周折,但如今想起来,如果用html5的canvas实现,真是太简单了。在《将画布(canvas)图像保存成本地图片的方法》这篇文章里就有一个只用了几行代码就实现了的画板功能——很简单,虽然有一个小bug——但完全能当作签名用。

我之前说了很多如何将canvas图像保存成图片并下载的方法,但这些方法都是将图片保存到客户端,而我们的签名需求是需要将canvas的内容保存到服务器端,如何实现?

其实很简单,看完下面的这段PHP代码,相信你也会觉得很简单。

<?php
// requires php5
define('UPLOAD_DIR', 'images/');
$img = $_POST['img'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = UPLOAD_DIR . uniqid() . '.png';
$success = file_put_contents($file, $data);
print $success ? $file : 'Unable to save the file.';
?>

从网页上传到服务器端的图片是base64_encode转码过的Data URL格式,数据在服务器端用base64_decode进行解码,保存成文件。我在上篇文章中提到的那个火狐浏览器的微博图文分享工具,在服务器端就是用到了这段代码。

有一天你也会需要用到它的,很有用的代码,收藏一下吧!

最新文章

  1. SQL取出 所有周六 周日的日期
  2. PHP与Javascript的混合测试
  3. 数据结构之图 Part3 – 1 遍历
  4. JavaScript基础--面向对象三大特性(八):继承封装多态
  5. Spring aop——前置增强和后置增强 使用注解Aspect和非侵入式配置
  6. 轻量级应用开发之(04)UIScrollView-1
  7. Python的深拷贝与浅拷贝
  8. [CF733D]Kostya the Sculptor(贪心)
  9. MYSQL内存
  10. os4开始CLLocationManager类中不支持locationServicesEnabled属性了
  11. 读数据库所有表和表结构的sql语句
  12. Join的实现步骤 以及连接的概念
  13. jQuery插件slides实现无缝轮播图特效
  14. Problem M
  15. server-sent-event使用流信息向客户端发送数据
  16. zip-gzip-bzip2_压缩文件
  17. Perl一行式:选择行输出、删除、追加、插入
  18. Unity Canvas vs Panel
  19. 芯片烧录器编程AT24C02
  20. linux shell中 if else以及大于、小于、等于逻辑表达式

热门文章

  1. QPushButton槽函数触发两次的问题
  2. 20155235 2016-2017-2《Java程序设计》课程总结
  3. 20155301 Makefile和MyOD和共享库
  4. 20155334 2016-2017-2《Java程序设计》课程总结
  5. c++ 结束程序的几种方式
  6. 洛谷 P1876 开灯
  7. 【LG3242】 [HNOI2015]接水果
  8. spring源码-aop动态代理-5.3
  9. https双向认证网站搭建
  10. VR中射线点击按钮的实现