Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.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 - Fatal编程技术网

文件已存在时自动重命名。。PHP代码

文件已存在时自动重命名。。PHP代码,php,Php,upload.php <form enctype="multipart/form-data" action="uploader.php" method="POST"> Choose a file: <input name="uploadedfile" type="file" /><br /> Choose a file1: <input name="uploadedfile1" type="file" /><br /> <inpu

upload.php

<form enctype="multipart/form-data" action="uploader.php" method="POST">
Choose a file: <input name="uploadedfile" type="file" /><br />
Choose a file1: <input name="uploadedfile1" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
<?php
mysql_select_db("test");

$target_path = "uploads/" . basename( $_FILES['uploadedfile']['name']);
$target_path1 = "upload1/" . basename( $_FILES['uploadedfile1']['name']);
$currentfile = $_FILES['uploadedfile']['name']; 
$currentfile1 = $_FILES['uploadedfile1']['name']; 

$dbfiles = mysql_query("SELECT * FROM new WHERE amount='$currentfile' || amount='$currentfile1'");
if(mysql_num_rows($dbfiles) > 0 )
{ 



}
else
{
        if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
        {
                echo "file1: ".$_FILES['uploadedfile']['name']."<br>";
                $file1 = basename( $_FILES['uploadedfile']['name']);
                mysql_query("insert into new (amount) values('$file1')");   
        }
        if(move_uploaded_file($_FILES['uploadedfile1']['tmp_name'], $target_path1))
        {
                echo "file2: ".basename( $_FILES['uploadedfile1']['name']);
                $file2 = basename( $_FILES['uploadedfile1']['name']);
                mysql_query("insert into new (amount) values('$file2')");   
        }
}
?>

选择一个文件:
选择一个文件1:

^upload.php的图片^

uploader.php

<form enctype="multipart/form-data" action="uploader.php" method="POST">
Choose a file: <input name="uploadedfile" type="file" /><br />
Choose a file1: <input name="uploadedfile1" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
<?php
mysql_select_db("test");

$target_path = "uploads/" . basename( $_FILES['uploadedfile']['name']);
$target_path1 = "upload1/" . basename( $_FILES['uploadedfile1']['name']);
$currentfile = $_FILES['uploadedfile']['name']; 
$currentfile1 = $_FILES['uploadedfile1']['name']; 

$dbfiles = mysql_query("SELECT * FROM new WHERE amount='$currentfile' || amount='$currentfile1'");
if(mysql_num_rows($dbfiles) > 0 )
{ 



}
else
{
        if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path))
        {
                echo "file1: ".$_FILES['uploadedfile']['name']."<br>";
                $file1 = basename( $_FILES['uploadedfile']['name']);
                mysql_query("insert into new (amount) values('$file1')");   
        }
        if(move_uploaded_file($_FILES['uploadedfile1']['tmp_name'], $target_path1))
        {
                echo "file2: ".basename( $_FILES['uploadedfile1']['name']);
                $file2 = basename( $_FILES['uploadedfile1']['name']);
                mysql_query("insert into new (amount) values('$file2')");   
        }
}
?>

您不应该按原始名称保存文件

最好在数据库中为文件指定一个唯一标识符,并将该标识符用于文件名

然后有一个下载页面,从数据库中检索文件路径和原始名称,并使用
readfile
将其发送给用户,并设置相关标题:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: '.filesize($file_path));
ob_clean();
flush();
readfile($file_path);
die();
从安全角度来看,这也更好,因为用户不再需要知道或访问服务器上的文件位置,因此如果他们上传任何恶意内容,他们将无法直接调用该文件

编辑:

要应用此功能,您需要有一个用于文件上载的表,其中包含一个自动递增的ID字段

然后,您可以使用
mysql\u query
将原始文件名和其他相关信息插入数据库(正如您在示例中已经使用的那样)。然后需要将查询传递到
mysql\u insert\u id
,这将为您刚才插入的行提供唯一标识符。使用此名称命名文件,然后在上载文件夹中添加“.dat”扩展名

在下载时,使用一个下载页面,该页面通过查询字符串或post参数获取id,然后使用该页面在数据库中查找信息。您可以计算出给定ID的文件名,因为这是您首先用来存储它的文件名

一旦您有了文件路径和原始名称,您就可以使用上面的代码向用户提供下载内容(在将
$file\u name
$file\u location
替换为您自己的参数(如果您调用其他参数的话)


下载页面还需要处理是否允许用户下载文件的任何检查

对问题的描述是一个小的混乱!。。你能用更好的方法吗