Tôi đang viết Proxy php đơn giản và tôi gặp khó khăn khi hiển thị tập tin png, đầu ra làLàm thế nào để hiển thị dữ liệu nhị phân từ curl trong php
và nó sẽ là:
Hình ảnh được mở trong Notepad ++. php curl tôi đang xem xét như thế này:
$ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$content = curl_exec($ch);
$info = curl_getinfo($ch);
header('Content-Type:' . $info['content_type']);
echo $content
tôi cố gắng có và không có CURLOPT_BINARYTRANSFER đầu ra là như nhau và hình ảnh không hiển thị. Làm thế nào tôi có thể hiển thị hình ảnh?
EDIT: khi tôi đang lưu dữ liệu đến tập tin và chuyển hướng sử dụng Location tiêu đề hình ảnh được hiển thị một cách chính xác:
$file = fopen('proxy_tmp~', 'w');
fwrite($file, $content);
fclose($file);
header('Location: ' . DIR . 'proxy_tmp~');
EDIT 2: Tôi đã nén gzip, bu khi tôi vô hiệu hóa nó tôi có cùng một vấn đề, khi tôi mở cả hai tập tin trong Notepad ++ một là DOS/Windows ANSI (bản gốc) và khác là DOS/Windows UTF-8 (tập tin được mở bởi một kịch bản). Khi tôi mở một tệp trong Notepad và thay đổi mã hóa thành ANSI và lưu tệp, mọi thứ đều ổn.
EDIT 3: Tôi nghĩ rằng tôi đã làm điều tương tự trên GNU/Linux nhưng không CURLOPT_BINARYTRANSFER
lựa chọn và nó làm việc tốt, đây là dự án của tôi https://github.com/jcubic/yapp.
Tôi không muốn gửi tệp để tải xuống, tôi muốn hiển thị hình ảnh trực tiếp vì tôi đang tạo proxy nơi tôi thay đổi url của hình ảnh trên trang. Tôi đơn giản nhận được dữ liệu khác nhau sau đó khi tôi tải các tập tin trực tiếp mà không có kịch bản của tôi. – jcubic