文件已存在时自动重命名。。PHP代码
upload.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
<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
替换为您自己的参数(如果您调用其他参数的话)
下载页面还需要处理是否允许用户下载文件的任何检查 对问题的描述是一个小的混乱!。。你能用更好的方法吗