我希望有人能帮我写这个php代码。目前,它只是将文件名为"img.png"的图像保存到服务器,但每次拍摄新的画布屏幕截图时,图像都会被覆盖。
我的目标是为每个新屏幕截图的图像创建一个新的唯一(如按时间顺序编号)文件名,并将其保存在服务器上。
到目前为止,这里的php代码:
$data = $_REQUEST['base64data'];
echo $data;
$image = explode('base64,',$data);
file_put_contents('img.png', base64_decode($image[1]));
谢谢。问候
尝试
$filename = 'img_'.date('Y-m-d-H-s').'.png';
file_put_contents($filename, base64_decode($image[1]));
这将使用包含当前日期和时间的文件名保存您的文件,例如
img_2013-09-19-21-50.png
尝试使用会话变量来递增计数器,如下所示:
<?php
session_start();
if(!isset($_SESSION['counter'])){
$_SESSION['counter'] = 0;
}
$_SESSION['counter']++;
$data = $_REQUEST['base64data'];
echo $data;
$image = explode('base64,',$data);
file_put_contents('img'.$_SESSION['counter'].'.png', base64_decode($image[1]));
?>
有几种方法可以做到这一点,但最简单的方法是在图像名称中添加时间戳/日期戳。根据需要设置名称格式。
$img_name = 'img'.date('YmdHisu').'.png'; // Date & time with microseconds
$img_name = 'img'.time().'.png'; // unix timestamp
离开 base64data 结构使用这个它会正常工作。
$fileName = preg_replace('#[^a-z.0-9]#i', '', $fileName);
$image = explode(".", $fileName);
它将为每个图像文件提供一个随机数。
要么
使用 uniqid() 函数为文件名创建一个 UID,要么创建一个文件夹,其中包含上传文件的用户名的名称并保留原始文件名。第一个的缺点是您必须将原始文件名保存在某个地方以显示给用户。
https://stackoverflow.com/a/4371988/2701758
**
/* simply for local time first give your continent then '/' then your country's
capital.
*/
date_default_timezone_set('Asia/Dhaka');
$now = new DateTime();
$now = $now->format("Y-m-d H:i:s.u");
$new_name = $now.$image;
/*what you want to add just write with dot,such
$new_name = 'img'.$now.$image;
*/
**