PDA

View Full Version : سوال: مشکل نامشخص بودن پسوند فایل در زمان دانلود



boysfe5
پنج شنبه 24 بهمن 1392, 23:41 عصر
با سلام
مشکل من نامشخص بودم پسوند زیپ فایل می باشد یعنی فایلی که برای دانلود گذاشتم زیپ بوده موقع دانلود پسوند فایل حذف میشود و فایل نامشخص می باشد باید بعد از دانلود به آخر فایل .zip اضافه کنم تا برطرف بشه ولی میخوام موقع دانلود پسوند فایل مشخص باشه تا بعد از دانلود دستی پسوند بهش اضافه نشود.
دو تا عکس ضمیمه کردم تا گویای مشکل من باشد.
از کدهای زیر در .htaccess موجود در public_html استفاده کردم ولی جواب نگرفتم.
<Files *.zip>
ForceType application/zip
Header set Content-Disposition attachment
</Files>
-------------------------------------------------
<Files *.zip>
ForceType application/octet-stream
Header set Content-Disposition attachment
</Files>
---------------------------------------------
AddType application/octet-stream zip
---------------------------------------------

abolfazl-z
جمعه 25 بهمن 1392, 13:24 عصر
با PHP دارید لینک دانلود می سازید یا نه دارین درباره لینک مستقیم صحبت می کنید ؟

boysfe5
جمعه 25 بهمن 1392, 18:16 عصر
آره با php باید به فایل دانلودی که بدون پسونده پسوند اضافه کنم که موندم چه جوری انجام بدم برای اینکه بهتر متوجه منظورم بفهمی دو تا فایل گذاشتم

abolfazl-z
جمعه 25 بهمن 1392, 18:37 عصر
امیدوارم کد زیر بهتون کمک کند :



$file='../downloads/'.$filename;
if (headers_sent()) {
echo 'HTTP header already sent';
} else {
if (!is_file($file)) {
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
echo 'File not found';
} else if (!is_readable($file)) {
header($_SERVER['SERVER_PROTOCOL'].' 403 Forbidden');
echo 'File not readable';
} else {
header($_SERVER['SERVER_PROTOCOL'].' 200 OK');
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: ".filesize($file));
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
readfile($file);
exit;
}
}

boysfe5
جمعه 25 بهمن 1392, 19:23 عصر
کدهای که اشاره کردین جواب نداد چون فایل خاصی مدنظرم نیست فایل های مختلفی به صورت زیپ در چندین پوشه دارم.

abolfazl-z
جمعه 25 بهمن 1392, 19:34 عصر
هدف از کد بالا فهماندن مشکل شما بود.
کد

header("Content-Type: application/zip");
به کلاینت (مرورگر) می فهمونه که فایلمون یک فایل zip هست.(که مشکل شما باید همین باشه)

header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
قسمت اول برای این هست که می خواهیم به کلاینت بگیم که یک فایلی رو می خواهیم در قالب دانلود براتون بفرستیم و دومی برای نام فایل هست.

boysfe5
جمعه 25 بهمن 1392, 21:09 عصر
ببخشید شما را ازیت کردم، کدی که گفتی استفاده کردم جواب نداد
کد زیر را اضافه کردم

ForceType application/zip
Header set Content-Disposition attachment
از همین کد استفاده کردم فایل را به صورت زیپ نشان میده ولی فایلی که برای دانلود گذاشتم نمیده

abolfazl-z
جمعه 25 بهمن 1392, 21:17 عصر
ببخشید شما را ازیت کردم، کدی که گفتی استفاده کردم جواب نداد
کد زیر را اضافه کردم

ForceType application/zip
Header set Content-Disposition attachment
از همین کد استفاده کردم فایل را به صورت زیپ نشان میده ولی فایلی که برای دانلود گذاشتم نمیده

شما نباید از طریق htaccess هدر(همین کد های بالا) رو اضافه کنید.
در فایلی که دارین با PHP اینکار را می کنید توسط تابع header در PHP کد های بالا را اضافه کنید.

boysfe5
جمعه 25 بهمن 1392, 21:36 عصر
من از سیستم سایت http://wp-premium.com استفاده می کنم جهت فروش فایل متاسفانه پشتیبانی سایت اصلا 10 روزه کل تماس را جواب نمی دهد
یه افزونه هستش که بر روی وردپرس نصب شده که فایهای دانلودی را مدیریت می کند راندوم می کنه و غیره
فایل اصلی که داره ضمیمه کردم به نام dl.php این فایل کد شده هست یه سری هم کد نشده داره براتون گذاشتم ببینید. با تشکر

abolfazl-z
جمعه 25 بهمن 1392, 21:53 عصر
این فایل رو نمیشه کاریش کرد.

ولی میشه یک روش دیگه هم زد.

شما همین فایل پی اچ پی رو مثل ذیل وارد htaccess کنید :


<Files /address file/dl.php>

Header set Content-Type: application/zip

</Files>

در غیر اینصورت باید منتظر پشتیبانیتون بمانید.

boysfe5
جمعه 25 بهمن 1392, 22:30 عصر
ممنون از اینکه وقت گذاشتی راهنمایی کردی. با تشکر