我从w3schools得到了这段代码,并根据这段代码进行了调整:Rename an uploaded file with PHP but keep the extension
请帮助,我该怎么做,使文件扩展名不会.tmp当我上传到服务器上的文件夹。
<?php
$filename=$_FILES["file"]["tmp_name"];
$extension=end(explode(".", $filename));
$newfilename=$prod .".".$extension;
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 100000))
{
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("../img/user_uploaded/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($filename,
"../img/user_uploaded/" . $newfilename. $extension);
echo "Stored in: " . "../img/user_uploaded/" .$newfilename. $extension;
}
}
}
else
{
echo "Invalid file, File must be less than 100Kb in size with .jpg, .jpeg, or .gif file extension";
}
?>
9条答案
按热度按时间hmmo2u0o1#
在上面的代码中,您试图获取临时文件的扩展名。相反,您可以使用用户上传的原始文件名的扩展名。
这将上传您的文件与实际的文件扩展名。
ubbxdtey2#
这个函数是复制和取消链接的连接。
niwlg2el3#
尝试使用此库进行图像处理.也许是题外话,但对于处理图像来说是非常有用的。
宽图像:http://wideimage.sourceforge.net/
举例来说:
n3schb8v4#
我不同意@ Alexander. Plutov的回答。您不必保存文件,然后复制它,然后取消链接。
由于您在代码中指定了目标文件名:
你所要做的就是指定另一个名字而不是
$newfilename
。如果您的目标是用其他扩展名替换.tmp,您可以删除最后四个字符(始终是.tmp,由PHP设置),然后添加您自己的扩展名。如果你只是想保留用户给的分机号,用途:
当然,你必须意识到使用用户发布的东西的风险。如果根本没有扩展名,或者扩展名太长,或者与真实的文件类型不匹配(deadly-virus.exe重命名为pretty-image.jpg),该怎么办?
zf9nrax15#
小例子可以用**兰德()**函数来创建随机文件名。
x9ybnkn66#
最好的方法是使用pathinfo()
vom3gejh7#
这部分会重命名文件。
move_uploaded_file($filename,"../img/user_uploaded/”.$new name);
所以问题是如何设置$newfilename的值。如果你有一个方法来生产这个,那么这个问题就解决了。
c3frrgcw8#
未初始化的变量$prod!这是一个重大的安全漏洞。在使用变量之前总是初始化它们。
cxfofazt9#
您可以添加日期时间到目录中,您上传它更容易。范例:
但是不要因为
/
改变了目录而放弃它