如何将时间/日期戳附加到 html 文件中的文件名



我有一个带有图像上传部分的 html 表单,它工作正常,但是出于数据管理原因,我希望图像文件名在上传时添加时间/日期戳。

过去发生的事情是,如果文件通过手机上传,它将被称为图像.jpg如果上传同名的新文件,它将被覆盖(可以理解(

但是,我希望发生的是,该文件将被称为类似于 image091118151821 的 11 九月 2018 15:18:21. 或类似的东西。

HTML 表单:

<form method="POST" action="incident-submit.php" enctype="multipart/form-data">
div class="element-date"><label class="title">Date</label><input class="large" data-format="yyyy-mm-dd" type="date" name="date" placeholder="yyyy-mm-dd"/></div>
<div class="element-input"><label class="title">Division</label><input class="large" type="text" name="input" /></div>
<div class="element-input"><label class="title">Location within Division</label><input class="large" type="text" name="input1" /></div>
<div class="element-input"><label class="title">Employee Division</label><input class="large" type="text" name="input2" /></div>
<div class="element-textarea"><label class="title">Cause of events</label><textarea class="large" name="textarea" cols="20" rows="5" ></textarea></div>

<input type="file" name="image">
</div>
<div>
<button type="submit" name="upload">POST</button>
</div>

以及将数据提交到数据库的 PHP:

// If upload button is clicked ...
if (isset($_POST['upload'])) {
// Get image name
$image = $_FILES['image']['name'];
// Get text
$date = $_POST['date'];
$division = $_POST['input'];
$location = $_POST['input1'];
$employeedivision = $_POST['input2'];
$events = $_POST['textarea'];
// image file directory
$target = "img/".basename($image);
...
if (move_uploaded_file($_FILES['image']['tmp_name'], $target)) {
$msg = "Image uploaded successfully";
}else{
$msg = "Failed to upload image";
}

然后我更改了

$image = $_FILES['image']['name'];

行到:

$image = $_FILES['image'.date('m-d-Y_hia').'.jpg']['name'.date('m-d-Y_hia').'.jpg'];

而且似乎没有上传任何东西

有没有办法让我发生这种情况,它不必在 php 中完成,javascript 也很好

有人可以帮助我解决这个难题吗? 提前致谢

使用方便的pathinfo()函数,您可以挖掘出文件名的所有单独部分。然后只需使用这些和date()函数来构建您选择的文件名。

$path_parts = pathinfo($_FILES['image']['name']);
$dest_filename = $path_parts['filename'] . date('mdyHis') . '.' . $path_parts['extension'];
// image file directory
$target = "img/$dest_filename";

如果您想将文件名与日期分开以使其更易于阅读,您可以尝试

$dest_filename = $path_parts['filename'] . 
'_' . 
date('mdyHis') . 
'.' . 
$path_parts['extension'];

您需要更改此行

$target = "img/".basename($image);

自:

$target = "img/".basename(explode('.',$image)[0] . date('m-d-Y_hia') . explode('.',$image)[1]);

最新更新