View Full Version : مشکل در دانلود فایل
lady64
یک شنبه 22 مرداد 1391, 23:55 عصر
سلام . من از این کد برای دانلود استفاده میکنم . اشکال کدنویسیم چیه که فایل رو با اینکه ظاهرا دانلود میکنه ؛ اما وقتی فایل رو میخوام باز کنم ؛باز نمیکنه . چه تصویر ، چه متنی و ...
اولین بارمه از کد دانلود استفاده میکنم . ممنون میشم دقیق بگید کجا رو باید تغییر بدم ؟
<?php
$size = filesize("radio.png") ;
header("Content-Type: application/force-download; name=\"". "radio.png" ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". "radio.png" ."\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo (readfile("radio.png"));
?>
lady64
دوشنبه 23 مرداد 1391, 06:29 صبح
ببینید . مثلا من میخوام یک عکس png رو که در پوشه ی جاری وجود داره دانلود کنم . اینو برای تست دارم انجام میدم ولی ظاهرا دانلود میشه اما فایل رو باز نمیکنه . هر دو روش زیر رو استفاده کردم اما نتیجه نمیده.علت چیه.ممنون میشم بگید .
راه 1 :
$file="radio.png";
$type="image/png";
$data=file_get_contents("png/".$file);
$size=strlen($data);
header("content-disposition:attachment; filename=$file");
header("content-type:$type");
header("content-length:$size");
echo $data;
راه 2 :
$size = filesize("radio.png") ;
header("Content-Type:image/png; name=\"". "radio.png" ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". "radio.png" ."\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo (readfile("radio.png"));
lady64
دوشنبه 23 مرداد 1391, 11:48 صبح
بنظرم همتون بلدین . ممنون میشم راهنمایی کنید . :ناراحت:
Unique
دوشنبه 23 مرداد 1391, 13:34 عصر
دوست عزیز readfile نیاز به echo نداره !
مطمئن بشین چیزی غیر از header برای browser نمیفرستین ! حتی یک space را هم echo یا توی فایلتون گذارین !
البته نیاز ی هم به Cache-Control, Content-Transfer-Encoding ، Expires ,Pragma نیست !
lady64
دوشنبه 23 مرداد 1391, 17:26 عصر
ممنونم . همه ی این ها رو رعایت کردم . اول صفحه هم ob_start() گذاشتم اما نمیشه که نمیشه . فایل رو بعد از دانلود که میخوام باز کنم ، میگه فایل یا خراب شده یا خیلی بزرگه . در صورتی که حجم کمی داره .
Unique
سه شنبه 24 مرداد 1391, 02:18 صبح
ob_start() نمیخواد !
اگه مسیر فایل را توی متغیر زیر بگذارین باید کار بده :
$file_name = "path/to/file";
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file_name).'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($file_name));
readfile($file_name);
راستی چک کنین BOM نداشته باشه فایلتون ! نیازی هم نیست type را برابر png بگذارین !
lady64
سه شنبه 24 مرداد 1391, 10:14 صبح
یک دنیا ممنون . حل شد . علاوه بر کدی که دادید با راهنمایی شما یادم اومد جایی آقای شهرکی گفته بودند :
توی Dreamweaver باید در پنجره Save As در کادر Unicode Normalization گزینه C رو انتخاب کرده و گزینه (Include Unicode Signature (BOM رو غیرفعال کنید.
اینو برای کسانی گفتم که مثل من مشکل دانلود دارند.
واقعا ممنونم . چون بار اولم بود میخواستم یک نمونه ی ساده رو تست کنم ، حالا میخوام کاری کنم ، هر چی آپلود میکنم ، قابل دانلود باشه ، نه یک مورد خاصی که من آدرس میدم . اینو هم امتحان میکنم . اگر سوالی داشتم مزاحمتون میشم.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.