Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重命名已上载的文件_Php_Mysql_Rename_File Rename - Fatal编程技术网

Php 重命名已上载的文件

Php 重命名已上载的文件,php,mysql,rename,file-rename,Php,Mysql,Rename,File Rename,我已经在PHP中使用了upload&show功能,但是如果有人在我的视图部分按下“重命名”按钮,它将打开一个对话框,显示现有文件名,用户可以更改该文件名,还可以存储用户输入的新名称(不仅在SQL中,还可以存储在目录中更改的文件名)。 文件路径存储在MySQL中,文件存储在define文件夹中 我试着在互联网上查找,但大多数都是在上传时更改名称或更改预定义名称,而不是由用户更改 这是我的文件上传代码: $db=connection if(isset($_POST['submit'])) {

我已经在PHP中使用了upload&show功能,但是如果有人在我的视图部分按下“重命名”按钮,它将打开一个对话框,显示现有文件名,用户可以更改该文件名,还可以存储用户输入的新名称(不仅在SQL中,还可以存储在目录中更改的文件名)。 文件路径存储在MySQL中,文件存储在define文件夹中

我试着在互联网上查找,但大多数都是在上传时更改名称或更改预定义名称,而不是由用户更改

这是我的文件上传代码:

 $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>";
}

您可能需要采取不同的方法:上传文件并在上传后将其重命名为方便的名称,例如:表的行id,并将文件名存储在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
(不要忘记转义输入并清理文件名)

向用户提供文件时(用户下载文件)


请将现有代码提供给您的
move\u上传的\u文件()
例程。没用没关系。我们只需要看看您正在尝试做什么。警告:您对参数化预处理语句非常开放,应该真正使用参数化预处理语句,而不是手动生成查询。它们由或提供。永远不要相信任何类型的输入,尤其是来自客户端的输入。即使您的查询仅由受信任的用户执行,通常也会使用-
rename($src,$dest)
-,然后可能需要
direname($file)
然后更新数据库。
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . $row["filename"] . '"');
readfile('files/' . $row["id"]);