Tôi có một tệp có tên là 94bf663a100e848fb599209af8cdc2b5.wmv. Tôi biết pathinfo
sẽ không cung cấp cho tôi phần mở rộng nếu tôi chỉ sử dụng tên 94bf663a100e848fb599209af8cdc2b5. Tôi tin rằng glob
chỉ dành cho việc kiểm tra xem tệp có tồn tại hay không. Vì vậy, nó có thể để có được một phần mở rộng tập tin chỉ biết tên tập tin (94bf663a100e848fb599209af8cdc2b5)?Có thể tải phần mở rộng tập tin mà không biết?
Trả lời
Như ví dụ trên php glob manual page thấy, glob
không không chỉ cần kiểm tra nếu tập tin tồn tại, nó sẽ trả về tất cả các tập tin đó phù hợp với biểu hiện.
Dưới đây là một sửa đổi của ví dụ trên that page cho nhu cầu của bạn:
$name = "94bf663a100e848fb599209af8cdc2b5";
$matching = glob($name . ".*");
$info = pathinfo($matching[0]);
$ext = $info['extension'];
này giả định có một (và chỉ một) nộp với tên đó (với mở rộng bất kỳ), nhưng bạn sẽ có thể để sửa đổi nó nếu tệp có thể không tồn tại hoặc có thể có nhiều tệp có cùng tên và các phần mở rộng khác nhau.
Nó hoạt động rocker. Chỉ là những gì tôi đang tìm kiếm khá nhiều. Mỗi tên tập tin là duy nhất vì vậy tôi nghĩ rằng glob sẽ là đủ. – Scarface
Chức năng finfo_file()
sẽ kiểm tra chữ ký byte của tệp để trả về kiểu mẫu. Từ đó, bạn chủ yếu có thể suy ra phần mở rộng tập tin chính xác.
// Adapted from the PHP docs
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
echo finfo_file($finfo, $filename);
finfo_close($finfo);
Điều này giả định rằng phần mở rộng khớp với loại mime. Và không thành công cho các biến thể như '.jpeg' so với' .jpg'. Nó cũng đòi hỏi một số loại bảng tra cứu với phần mở rộng tập tin. –
tệp tin không hoạt động nếu không có phần mở rộng. Tôi vừa thử nghiệm nó. $ filename =/file1/file2/94bf663a100e848fb599209af8cdc2b5 – Scarface
fileinfo hoạt động bất kể phần mở rộng của tập tin có hoặc thậm chí nếu tập tin không có phần mở rộng. Đây thực sự là cách ưa thích để tìm/xác thực loại tệp. Trong khi tôi không biết tại sao bạn đang cố gắng để có được phần mở rộng, nếu nó là để xác nhận, bất cứ điều gì mà không sử dụng heuristics để xác nhận loại sẽ mở một lỗ hổng bảo mật cho hệ thống. – Mamsaac
Một vài ký tự đầu tiên của tệp (nhị phân) thường sẽ cung cấp cho bạn một số loại gợi ý về loại tệp là gì.
Hãy dùng thử bằng cách mở một số tệp nhị phân (rar, zip, mp3, v.v.) trong Notepad.
Vâng, nhưng tôi đang cố gắng để có được phần mở rộng trong php một cách hiệu quả. – Scarface
Thử chức năng filetype()
hoặc mime_content_type()
trong php ... chuyển đường dẫn tệp sẽ trả về loại tệp.
- 1. Tải phần mở rộng tập tin bằng ngôn ngữ C
- 2. Thêm phần mở rộng tập tin vào tập tin mở rộng ít hơn
- 3. Lấy phần mở rộng tập tin (basename?)
- 4. Regex để có được phần mở rộng tập tin
- 5. Cách tìm phần mở rộng của một tập tin?
- 6. Mở rộng tập tin kiểm tra PHP
- 7. Tải ImageFormat từ Tiện ích mở rộng Tập tin
- 8. Có thể làm cho AVURLAsset hoạt động mà không có phần mở rộng tệp không?
- 9. Lấy tên tệp mà không có phần mở rộng trong Tập lệnh Batch của Windows
- 10. Batch: Hủy bỏ phần mở rộng tập tin
- 11. Nhận dạng một tập tin bằng tiếng shebang và không có phần mở rộng
- 12. Tải phần mở rộng của một tập tin chứa trong NSString
- 13. android không thể mở tập tin
- 14. Hủy bỏ phần mở rộng của một tập tin
- 15. asp.net mvc HttpPostedFileBase nhận phần mở rộng tập tin
- 16. SiteCore url mà không có phần mở rộng .aspx
- 17. ASP.NET MVC 4 định tuyến không hoạt động khi id có phần mở rộng tập tin
- 18. Xóa thư mục con và phần mở rộng tập tin
- 19. Gán cú pháp cho một tập tin mà không có phần mở rộng trong Sublime Text 2
- 20. Kẹp giấy: tải lên từ url có phần mở rộng
- 21. Sử dụng ls, cách liệt kê các tập tin mà không cần in phần mở rộng (phần sau dấu chấm)?
- 22. FFmpeg định dạng tập tin đầu ra không có phần mở rộng
- 23. Loại bỏ .php phần mở rộng tập tin với tập tin .htaccess
- 24. PHP tập tin liệt kê nhiều phần mở rộng tập tin
- 25. Get Tên tập tin Nếu không mở rộng bằng Python
- 26. Codeigniter nhiều tập tin tải lên messes mở rộng tập tin
- 27. Các trang web ASP.NET không có phần mở rộng tập tin aspx
- 28. Làm thế nào tôi có thể thêm một tem thời gian để một tên tập tin được tải lên với $ _file trước phần mở rộng tập tin
- 29. ms mở rộng tập tin văn phòng
- 30. Tệp kiểm tra PHP tồn tại mà không biết phần mở rộng
hahahaha điều đó tốt. Tôi không thể tin rằng bạn đã có thể kéo ra tham chiếu đó quá nhanh. – Scarface
Xin lưu ý rằng mọi tiện ích mở rộng đều là một phần của tên tệp: bạn có thể có các tệp có tên là 'foo',' foo.bar', 'foo.bar.tar',' foo.bar.tar.gz', 'foo.bar .tar.gz.sig' và tất cả đều đề cập đến các tệp khác nhau. (Tạm thời bỏ qua các tệp được liên kết nhiều.) Nếu bạn không biết bất kỳ phần mở rộng nào, bạn không thực sự _have_ tên tệp. Sự khác biệt này rất quan trọng, vì đó là lý do tại sao [Michael] (http://stackoverflow.com/questions/6615039) và các câu trả lời của Switz (nay đã bị xóa) không phù hợp với bạn. – sarnold