我有一个“困境”,不知道什么是商业最佳实践。什么是验证文件名的业务最佳实践?
我正在使用Uploadify上传图片。现在我需要在保存文件之前验证文件名。
我已经看过不同的解决方案,但不能找到一个好的解决方案。
这里是我的标准:
- 文件名必须全部使用小写
- 文件名只能包含charaters [A-Z0-9_-]
- 我必须能够重命名文件
如果文件名是my.file(name).jpeg
,你会怎么办?
我可以在'。'上分解文件名。并保存扩展名,然后内爆再次获取文件名。但不知道这是否是最好的解决办法。
我有以下功能有点帮助:
function getExts($filename)
{
$exts = explode("[/\\.]", $filename) ;
$n = count($exts)-1;
$exts = $exts[$n];
return $exts;
}
function validFilename($filename)
{
$filename = str_replace(" ", "_", $filename);
$pattern = "/[^[a-z0-9_-]/";
return preg_replace($pattern, "", strtolower($filename));
}
更新1
我recieving通过$ _FILES文件。这给了我下面的数据:
- $ _FILES [ “文件”] [ “名称”] - 被上传文件
- $ _FILES名[ “文件”] [ “型”] - 类型上传文件的大小
- $ _FILES [“file”] [“size”] - 上传文件的大小(以字节为单位)
- $ _FILES [“file”] [“tmp_name”] - 临时副本的名称存储在服务器上的文件
- $ _FILES [“file”] [“error”] - 文件上传产生的错误代码
UPDATE 2
我刚刚发现了一些东西。我可以使用getimagesize这将返回一个由7个元素组成的数组。其中一个元素[2]是IMAGETYPE_XXX。
所以我尝试使用此代码:
function getExts2($filename)
{
list(,,$type) = getimagesize($filename);
return $type;
}
但它只返回2号...
(我也尝试使用exif_imagetype,但只得到PHP错误:调用未定义功能。)
'getimagesize'返回的类型可以通过'image_type_to_extension'函数转换为文件扩展名:http://us2.php.net/function.image_type_to_extension – 2009-12-08 23:51:58
@Ben:请参阅我对使用getimagesize的评论。 – Steven 2009-12-09 09:51:44