[英]php save image with specific file name not overwriting each other
我希望有人可以幫助我處理這個 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
讓 base64 數據結構使用這個它會正常工作。
$fileName = preg_replace('#[^a-z.0-9]#i', '', $fileName);
$image = explode(".", $fileName);
它將為每個圖像文件提供一個隨機數。
要么使用 uniqid() 函數為文件名創建一個 UID,要么創建一個帶有上傳文件的用戶名的文件夾並保留原始文件名。 第一個的缺點是您必須將原始文件名保存在某處以顯示給用戶。
**
/* 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("Ymd H:i:su"); $new_name = $now.$image; /*what you want to add just write with dot,such $new_name = 'img'.$now.$image; */
**
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.