2013-02-07 51 views
9

Tôi muốn tải tiện ích mở rộng hình ảnh được tải lên.Tải tiện ích mở rộng hình ảnh

Như tôi biết, cách tốt nhất là chức năng getimagesize().

nhưng hàm của hàm này, trả về image/jpeg khi hình ảnh có số .jpg hoặc cũng là .JPEG mở rộng.

Làm cách nào để có được chính xác tiện ích mở rộng?

+0

Tại sao bạn quan tâm đến việc gia hạn? Tôi có thể tải lên một jpeg với một phần mở rộng '.png', nhưng bạn vẫn có thể thấy rằng nó là một jpeg với các phương thức khác. – Eric

Trả lời

17

bạn có thể sử dụng image_type_to_extension chức năng với loại hình ảnh được trả về bởi getimagesize:

$info = getimagesize($path); 
$extension = image_type_to_extension($info[2]); 
20
$ext = pathinfo($filename, PATHINFO_EXTENSION); 
4
$image = explode(".","test.file.hhh.kkk.jpg"); 
echo end($image); 
+0

Thật sao? test.file.jpg – dfsq

+0

cách chứa các tệp. trong tên? – phpalix

+0

@dfsq, Bạn cho tôi test.file.jpg nhưng Bây giờ hãy kiểm tra xem những người đàn ông có 4 dấu chấm. –

2

Thêm một cách để làm điều đó:

$ext = strrchr($filename, "."); // .jpg 
0

Bạn cũng có thể phát nổ tên tập tin có dấu chấm và lấy phần cuối của mảng như sau:

$ext = end(explode('.', 'image.name.gif')); 

Theo: Two different ways to find file extension in PHP

Và một cách mới để bạn lol:

$ext = explode('.', 'file.name.lol.lolz.jpg'); 
echo $ext[count($ext) - 1]; 
6

Bạn cũng có thể sử dụng strrpos và chức năng substr để có được phần mở rộng của bất kỳ tập tin

$filePath="images/ajax-loader.gif"; 

$type=substr($filePath,strrpos($filePath,'.')+1); 

echo "file type=".$type; 

đầu ra: gif

nếu bạn muốn mở rộng như .gif

$type=substr($filePath,strrpos($filePath,'.')+0); 

đầu ra: .gif

0

Đối với những người muốn kiểm tra xem loại hình ảnh là JPEG, PNG hoặc vv Bạn có thể sử dụng chức năng exif_imagetype . Hàm này đọc các byte đầu tiên của một hình ảnh và kiểm tra chữ ký của nó. Dưới đây là một ví dụ đơn giản từ php.net:

<?php 
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { 
    echo 'The picture is not a gif'; 
} 
?> 
0
$size = getimagesize($filename); 
$ext = explode('/', $size['mime'])[1]; 
0
$file_ext = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION); 

hoặc để làm cho nó sạch

$filename= $_FILES["file"]["name"]; 
$file_ext = pathinfo($filename,PATHINFO_EXTENSION); 
Các vấn đề liên quan