我在网站上使用PHP。我必须让用户上传他们的照片。 现在,图片可以是jpeg或png或gif格式。 我的问题是我通过唯一的用户ID识别用户,所以我想将图片保存为: userid.jpg或userid.png等 现在,我如何找到用户使用php选择的文件的扩展名?
答案 0 :(得分:6)
我不会依赖访问者提供的文件扩展名。相反,问问文件本身是什么(这仍然是欺骗,但它不太可能;你也不必怀疑扩展名是3或4个字符(例如jpeg,jpg))。尝试:
if ($_FILES['avatar']['type'] == "image/gif")
if ($_FILES['avatar']['type'] == "image/jpeg")
if ($_FILES['avatar']['type'] == "image/png")
他们更可靠。
答案 1 :(得分:5)
您可以使用fileinfo(PHP> = 5.3),或者如果您使用的是旧版本的PHP,而不是依赖客户端发送的扩展名,也可以确定文件的类型,像mime_content_type
一旦你拥有了文件的mime类型,只需要映射(比如'image / png'=>'png')
(出于安全原因,实际上应该更好;如果我没记错的话,$ _FILES ['...'] ['type']由客户端发送,可以伪造)
答案 2 :(得分:2)
如果你使用PHP 5.3运行一个很好的更新服务器,你应该查看新的File Information扩展。它将查看文件本身并尝试确定mime类型,从中可以获得扩展名。这比查看浏览器提供的扩展或mime类型更可靠,因为这两者都可以伪造。
理想的解决方案可以结合使用所有这些方法来获得最大效果。
答案 3 :(得分:1)
$filename = "harbl.jpg";
$fileinfo = pathinfo($filename);
echo($fileinfo['extension']); // prints "jpg"
答案 4 :(得分:1)
假设你有
<input type="file" name="foo">
你可以做到
$info = pathinfo($_FILES['foo']['name']);
$extension = $info['extension'];
答案 5 :(得分:1)
array_pop(explode(".", $_FILES["image"]["name"]))
或
pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION)
答案 6 :(得分:0)
我在最近构建的应用程序中使用了Array。而且效果很好。
$file_type = array('image/gif' => 'gif',
'image/jpeg' => 'jpg',
'image/pjpeg' => 'jpg',
'image/bmp' => 'jpg',
'image/png' => 'png');
if(array_key_exists(($_FILES['file_upload']['type']), $file_type){
Your Function
}
答案 7 :(得分:0)
$extension = end(explode(".",$_FILES['foo']['name']));
答案 8 :(得分:0)
海
You can check the image type easily in php.For example, you may have
<input type="file" name="image">
$img_name=$_FILES["image"]["name"]; //name of the image
$img_tmpname=$_FILES["image"]["tmp_name"]; //temporary name
$len=strlen($img_name); //length of image name
$dot=strpos($img_name,"."); //finding position of .
$type=substr($img_name,$dot,$len); //finding string from . to end of string.
Then use if statement and check the file
如果($类型==”。GIF '|| $类型=='。JPG '|| $类型=='。JPEG '|| $类型=='。PNG '|| $类型==' .GIF '|| $类型=='。JPG '|| $类型=='。PNG '|| $类型==' JPEG') {
//你的代码............. }
答案 9 :(得分:0)
还有一种简单的方法可以帮助我获取用户上传的文件扩展名。
此代码查看是否允许扩展名并更改文件名:
HTML:
<form method='post' enctype='multipart/form-data'>
<input type='file' class='f' name='fileToUpload' value='' id='fileToUpload'><br>
<input type='submit' name='submit' class='button' value='Senden'>
</form>
PHP:
$target_dir = "files/";
$target_filee = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$imageFileType = strtolower(pathinfo($target_filee,PATHINFO_EXTENSION));
$user = $_SESSION['user_id'] # Here you have to put the user id
$target_file = $target_dir . $user . "." . $imageFileType;
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "gif") {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file) {
echo "The file has been uploaded!";
}else{
echo "Ohhh, it didn't work";
}
}