tiên, tìm tiện ích mở rộng:
$pos = strrpos($filename, '.');
if ($pos === false)
{
// file has no extension; do something special?
$ext = "";
}
else
{
// includes the period in the extension; do $pos + 1 if you don't want it
$ext = substr($filename, $pos);
}
Sau đó gọi tập tin của bạn dù sao đi nữa bạn muốn, và gắn liền với các tên phần mở rộng:
$newFilename = "foobar" . $ext;
move_uploaded_file($_FILES['picture']['tmp_name'], 'peopleimages/' . $newFilename);
EDIT tư duy của nó, không ai trong số này là tối ưu. Tiện ích mở rộng tệp thường xuyên nhất là mô tả loại tệp nhưng không phải lúc nào cũng như vậy. Ví dụ: bạn có thể đổi tên tệp .png thành đuôi .jpg và hầu hết các ứng dụng sẽ vẫn phát hiện tệp đó dưới dạng tệp png. Ngoài ra, một số hệ điều hành nhất định không sử dụng phần mở rộng tệp để xác định loại tệp.
Với $_FILE
video tải lên, bạn cũng được cung cấp phần tử type
đại diện cho loại MIME của tệp bạn đã nhận được.Nếu bạn có thể, tôi khuyên bạn nên dựa vào nó thay vì trên tiện ích mở rộng đã cho:
$imagetypes = array(
'image/png' => '.png',
'image/gif' => '.gif',
'image/jpeg' => '.jpg',
'image/bmp' => '.bmp');
$ext = $imagetypes[$_FILES['myfile']['type']];
Bạn có thể có more complete list of MIME types here.
Tôi cũng sử dụng is_uploaded_file() chức năng để kiểm tra xem các tập tin chúng tôi đang chỉ tay vào thực sự là một tập tin tải lên. –
@Niels Bom: 'move_uploaded_file' thực hiện điều đó cho bạn. – zneak
@zneak Tôi đã sửa. –