Как добавить метку времени / даты к имени файла в HTML-файле - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть html-форма с разделом загрузки изображений, и она отлично работает, однако из соображений управления данными мне бы хотелось, чтобы к имени файла изображения добавлялась метка времени / даты при загрузке.

Раньше случалось так, что если файл будет загружен через телефон, он будет называться image.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 тоже подойдет

Может ли кто-нибудь помочь мне решить эту головоломку? Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Используя удобную функцию 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'];
0 голосов
/ 11 сентября 2018

Вам нужно изменить эту строку

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

на:

$target = "img/".basename(explode('.',$image)[0] . date('m-d-Y_hia') . explode('.',$image)[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...