我想知道将文件重命名为随机(字母和数字)的速度更快更强的方式
另一个问题是:我正在尝试放置许多不允许的文件类型,但实际上我的代码只适用于一种类型!!所以,如果你可以告诉我如何设置多种类型:)
这是我的代码:
if ( $_REQUEST['do'] == "doUpload" )
{
$TEMP = $_FILES['userfile']['name'];
$FileName = stripslashes($TEMP);
$FileType = strrchr($FileName ,'.');
$box = $uploadDIR.'/'.$TEMP;
$notype= ".php";
if ($FileType == $notype){
echo "NOT ALLOWED TO ATTACH THIS KIND OF TYPES";
exit;
}
if (file_exists($box))
{
echo "<center><b><font color=red>THE FILE ALREADY EXIST</font><br><br><a href='http://$httpname/$box' target='_blank'>THE LINK</a></b><center>";
}
else
{
move_uploaded_file($_FILES['userfile']['tmp_name'],$box);
echo " SUCCESS ";
答案 0 :(得分:1)
要回答不允许使用的文件类型,我会执行类似
的操作$disallowedFileTypes = array('.php.', '.exe.', '.dmg');
if (in_array($FileType, $disallowedFiled)) {
echo 'error';
exit;
} else {
// run upload
}
哦,你检查扩展程序的方式是有缺陷的,因为如果文件上传了一个文件会破坏。在名称中my.file.php
最好使用phpinfo()方法http://php.net/manual/en/function.pathinfo.php
<?php
$path_parts = pathinfo($FileName);
$FileType = $path_parts['extension'];
?>
对于随机文件名,请仔细查看PHP函数
答案 1 :(得分:0)
你可以使用uniqid():
$FileName = uniqid();
答案 2 :(得分:0)
我在允许列表而不是排除列表上工作(你不想要的比你想要的更多)
$allowedExtensions = array("txt","rtf","doc","pdf","docx","xlsx","xls","ppt","pptx","zip","rar","DOC","DOCX","mdb","MDB");
// check like this
if(!in_array($extension, $allowedExtensions)) {
$adderr = "Invalid File Type. Please upload an allowed file type.";
}
对于文件命名,我总是使用日期与时间戳+文件名的组合,就好像你只使用上面建议的文件名的md5(),而它很少见到它仍然可以获得大的重复足够的数据集。通过实施时间协议,您永远不会重复。
$newname = md5(date("Y-m-d H:i:s").$_FILES['pricelist']['tmp_name'].$filename);