簡體   English   中英

php使用特定文件名保存圖像不會相互覆蓋

[英]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,要么創建一個帶有上傳文件的用戶名的文件夾並保留原始文件名。 第一個的缺點是您必須將原始文件名保存在某處以顯示給用戶。

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("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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM