PDA

View Full Version : سوال: نمایش تصویر بجای دانلود کردن آن در php



farhadhp
یک شنبه 03 بهمن 1395, 20:03 عصر
سلام

دوستان من از کدهای زیر استفاده میکنم تا تصویر رو با پی اچ پی نشون بدم.



$ch = curl_init(); curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $xfx);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$content = curl_exec($ch);
curl_close($ch);
$nnnnnnn = $row['file_name'];
header("Content-type: $ft");
header('Content-Length: ' . $row['file_size']);
readfile($content);
die();

میخام وقتی این کدها اجرا شدن تصویر رو نشون بده که این کار نمیکنه.

دوستان متاسفانه استایل کدهای ادیتور انجمن برنامه نویس‌ باز نمیشه برای راحت خوندن کدها کدها رو در ادیتورتون کپی کنید.

ermya_
سه شنبه 05 بهمن 1395, 22:32 عصر
بفرمایید

<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $xfx);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

$content = curl_exec($ch);

curl_close($ch);

$filename = basename($row['file_name']);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

switch( $file_extension ) {
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpeg"; break;
default:
}

header('Content-type: ' . $ctype);
readfile($content);

farhadhp
چهارشنبه 06 بهمن 1395, 11:11 صبح
ممنون از پاسختون.
من
Content-type: رو از دیتا بیس میدم و درست هم هست.
مشکل من اینه که تصویر رو نشون نمیده.
نمیدونم کجای کارم مشکل داره.

ermya_
چهارشنبه 06 بهمن 1395, 12:54 عصر
مشکل اون die() بعد از header هست
کلاً در php وقتی شما header رو ست میکنی قبل و بعدش نباید از echo یا die یا print استفاده کنی وگرنه یک نوتیفیکیشن میگیری تحت عنوان headers already sent که به سورس فایل عکست اضافه میشه و چون دیتا binary هست دیتات corrupt میشه
اگه اصرار داری که حتما این کارو کنی
باید خط اول کدت این رو اضافه کنی تا مشکل حل شه
ob_start();

farhadhp
چهارشنبه 06 بهمن 1395, 13:04 عصر
با گذاشتن ob_start و برداشتن die() هم کار نکرد.

من سورس تصویر که در قالب یک فایل متنی با پسوند txt هست رو میگیرم و از طریق کدهای بالا میخام به کاربر نشونش بدم.

ermya_
چهارشنبه 06 بهمن 1395, 13:40 عصر
یک نمونه از عکسی که لود میشه ولی نشون داده نمیشه رو save کن و در قالب فایل زیپ همینجا ارسال کن
و یا اون controller که عکس رو نشون میده رو بفرست تا بتونم ببینم مشکل کجاست