Переименовать файл, который уже загружен - PullRequest
0 голосов
/ 17 апреля 2019

Я уже использовал функцию загрузки и показа в PHP, но если кто-то нажмет кнопку «Переименовать» в моем разделе просмотра, откроется диалоговое окно, в котором будет показано существующее имя файла, оно может быть изменено пользователем, а также сохранено новое имя.который вводится пользователем (не только в SQL, но и в измененном имени файла, в котором хранится каталог).путь к файлу хранится в MySQL, файл хранится в папке определения.

Я пытался найти в Интернете, но большая часть его изменяет имя при загрузке или изменяет предварительно определенные имена, а не изменяет пользователь

Вот мой код загрузки файла:

 $db=connection
 if(isset($_POST['submit']))
 {

     $filename=$_FILES["pdf"]["name"];
     $tempname=$_FILES["pdf"]["tmp_name"];
     $folder="files/".$filename;

     move_uploaded_file($tempname,$folder);
     $abc="INSERT INTO tables (pdf) VALUES ('$folder')";
     $res=mysqli_query($db,$abc);
  if($res)
  {
   echo "save";
  }
 } 

и это мое мнение:

<?php

$acb = "SELECT * FROM tables";
$ress = mysqli_query($db, $acb);
while ($test = mysqli_fetch_array($ress)) {
    $id = $test['id'];
    echo "<tr alian='center'>";

    $path = "/files";
    $file2 = basename($path, ".php");
    echo "<td>".$test['id']."</td>";
    echo "<td>".basename($test['pdf'])."</td>";
    echo "<td><a href='ren.php?id=$id'>Rename</a></td>";

    echo "<td><a href='del.php?id=$id'>Delete</a> 
</td>";
}

Я понимаю, что это простой код и не имеет никакого связанного кода для переименования, ноЯ уже много раз пытался проверить.

1 Ответ

1 голос
/ 17 апреля 2019

Возможно, вы захотите использовать другой подход: возможно, загрузите файлы и переименуйте их во что-нибудь удобное после загрузки, например: идентификатор строки таблицы, и сохраните имя файла в таблице MySQL (добавьте столбец имени файла) ), который пользователь может изменить. Затем, когда пользователь загрузит файл, отправьте имя, хранящееся в базе данных, с заголовком Content-disposition.

При загрузке:

$filename = mysqli_real_escape_string($db, basename($_FILES["pdf"]["name"]));

if (mysqli_query($db, "INSERT INTO tables (pdf) VALUES ('$filename')")) {
    $id = mysqli_insert_id($db);
    $folder = "files/" . $id;
    move_uploaded_file($_FILES["pdf"]["tmp_name"], $folder);
}

При обновлении имени файла вы будете делать что-то вроде этого:

UPDATE tables SET pdf = '$newName' WHERE id = $id

(Не забудьте выйти из ввода и очистить имя файла)

При передаче файла пользователю (пользователь скачивает файл)

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . $row["filename"] . '"');
readfile('files/' . $row["id"]);
...