2011-01-20 37 views
6

Tôi có thể sử dụng URL bên ngoài trong tệp readfile() không?PHP readfile() của URL bên ngoài

header('Content-type: application/pdf'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Content-Disposition: inline; filename="'.$file.'" '); 
    //header('Content-Length: ' . filesize("http:...z/pub/".$file.'.pdf')); 
    @readfile("http://...z/pub/".$file.'.pdf'); 
+2

Dùng thử và/hoặc [RTM] (http://php.net/readfile): "URL có thể được sử dụng làm tên tệp với chức năng này nếu trình bao bọc fopen đã được bật". ;-) – netcoder

+0

Tôi có nên làm 'exec (' wget $ url -O $ filename ") 'không? – user583311

Trả lời

17

Tài liệu PHP trên readfile trạng thái:

Một URL có thể được sử dụng như một tên tập tin với chức năng này nếu fopen wrappers đã được kích hoạt. Xem fopen() để biết thêm chi tiết về cách chỉ định tên tệp. Xem Supported Protocols and Wrappers để biết các liên kết đến thông tin về khả năng của các trình bao bọc khác nhau, ghi chú về cách sử dụng và thông tin về bất kỳ biến được xác định trước nào mà chúng có thể cung cấp.

Là một thay thế bạn cũng có thể sử dụng file_get_contents:

echo file_get_contents("http://...z/pub/".$file.'.pdf'); 
+0

Trong cả hai giải pháp có một số vấn đề với các tập tin hoặc cái gì khác, bởi vì không hoạt động. – user583311

+0

Đã xóa -1 sau khi chỉnh sửa;) – Mchl

+0

@ user583311 Điều gì có vẻ là vấn đề? –

2

Vâng, theo readfile page:

Một URL có thể được sử dụng như một tên tập tin với chức năng này nếu fopen_wrappers đã được bật. Xem fopen() để biết thêm chi tiết về cách chỉ định tên tệp. Xem số Supported Protocols and Wrappers để biết các liên kết đến thông tin về khả năng của các trình bao bọc khác nhau, ghi chú về cách sử dụng và thông tin trên bất kỳ biến được xác định trước nào mà họ có thể cung cấp.

Các vấn đề liên quan