Php 上载时重命名图像?
这是我从学校里挑选的一个例子。我只是想修改一下以适应我的要求 我需要的是,当上传图像时,图像将按顺序重命名,以避免重复。如果两个用户有两个不同的图像,但碰巧两个不同图像的名称相同,则使用此代码,一个用户将收到一条提示,说明“已存在”阻止上载 我试着换了Php 上载时重命名图像?,php,Php,这是我从学校里挑选的一个例子。我只是想修改一下以适应我的要求 我需要的是,当上传图像时,图像将按顺序重命名,以避免重复。如果两个用户有两个不同的图像,但碰巧两个不同图像的名称相同,则使用此代码,一个用户将收到一条提示,说明“已存在”阻止上载 我试着换了 echo$\u文件[“文件”][“名称”]。“已经存在。” 与 move_上传的文件($_文件[“文件”][“tmp_名称”], “上载/”$_文件[“文件”][“tmp_名称”]); echo“存储在:”。“上传/”$_文件[“文件”][“tm
echo$\u文件[“文件”][“名称”]。“已经存在。”代码>
与
move_上传的文件($_文件[“文件”][“tmp_名称”],
“上载/”$_文件[“文件”][“tmp_名称”]);
echo“存储在:”。“上传/”$_文件[“文件”][“tmp_名称”]代码>
但似乎并没有给我一个解决办法
有人能给我建议一种方法,让我按照顺序重新命名上传的图像吗?谢谢
代码:
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br>";
echo "Type: " . $_FILES["file"]["type"] . "<br>";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
只需更改此行:
移动上传的文件($上传文件[“文件”][“tmp\U名称”],“上传/”$您的文件\U名称)
对于图像名称,您可以使用文件的md5和时间戳来创建唯一的序列只需更改此行:
移动上传的文件($上传文件[“文件”][“tmp\U名称”],“上传/”$您的文件\U名称)
对于图像名称,您可以使用文件的md5和时间戳来创建唯一的序列
移动上传的文件时,将文件名$yourFileNAME
更改为用户名或用户id等唯一值,以便两个文件的名称不相同
move_uploaded_file( $_FILES['file']['tmp_name'], "upload/".$yourFileNAME."".$_FILES["file"]["type"] );
试试这个
移动上传的文件时,将文件名$yourFileNAME
更改为用户名或用户id等唯一值,以便两个文件的名称不相同
move_uploaded_file( $_FILES['file']['tmp_name'], "upload/".$yourFileNAME."".$_FILES["file"]["type"] );
使用uniqid()
PHP函数可能是最好的方法
请注意,如果在多台主机上同时生成标识符,则可能会在同一微秒内生成标识符
您还可以通过mysql表生成uniqueid
create table ids(id int auto_increment primary key);
当用户上传他们的图片时,像这样编写sql
insert into ids () values();
select last_insert_id();
希望这能对您有所帮助。使用uniqid()
PHP函数可能是您最好的方法
请注意,如果在多台主机上同时生成标识符,则可能会在同一微秒内生成标识符
您还可以通过mysql表生成uniqueid
create table ids(id int auto_increment primary key);
当用户上传他们的图片时,像这样编写sql
insert into ids () values();
select last_insert_id();
希望这会对您有所帮助。您想为每个上传的文件生成一个唯一的ID吗?您正在做的事情非常可怕。您让用户指定磁盘上有哪些文件。这是一个巨大的安全风险。如果有人上传somethinevil.php
?@Brad这不会让它上传$allowedExts=array(“gif”、“jpeg”、“jpg”、“png”)
“除非”你将.php
文件命名为允许的扩展名之一。@Fred,如果你认为这能给你带来安全性,那你就疯了。你仍然可以上传你想要的任何东西。此脚本甚至不验证路径是否在upload/
中!如果我在。/../../../
等中添加了一些内容,该怎么办?@Fred,指出这样的脚本中的问题是至关重要的。人们总是来StackOverflow和复制/粘贴代码,却不知道这意味着什么。你想为每个上传的文件生成一个唯一的ID吗?你正在做的事情太可怕了。您让用户指定磁盘上有哪些文件。这是一个巨大的安全风险。如果有人上传somethinevil.php
?@Brad这不会让它上传$allowedExts=array(“gif”、“jpeg”、“jpg”、“png”)
“除非”你将.php
文件命名为允许的扩展名之一。@Fred,如果你认为这能给你带来安全性,那你就疯了。你仍然可以上传你想要的任何东西。此脚本甚至不验证路径是否在upload/
中!如果我在。/../../../
等中添加了一些内容,该怎么办?@Fred,指出这样的脚本中的问题是至关重要的。人们总是来StackOverflow和复制/粘贴代码,却不知道这意味着什么。你建议我如何定义“$yourFileNAME”?如果用户有电子邮件id,例如sample123@gmail.como然后您可以获取sample123并另存为图像文件名,即$yourFileNAME=“sample123”你建议我如何定义“$yourFileNAME”?如果用户有电子邮件id,例如sample123@gmail.como然后您可以获取sample123并另存为图像文件名,即$yourFileNAME=“sample123”