PDA

View Full Version : سوال: کد دانلود فایل



.fatemeh
پنج شنبه 19 اسفند 1389, 11:03 صبح
سلام
میخوام وقتی کاربر روی اسم یه فایل کلیک کرد ، پنجره دانلود باز بشه و بتونه دانلود کنه
می شه راهنمایی کنین

MMSHFE
پنج شنبه 19 اسفند 1389, 11:16 صبح
با سلام، كافيه توي قسمت href تگ A، آدرس فايل رو بگذارين تا وقتي روش كليك ميكنن، پنجره دانلود بياد. البته اگه مرورگر به نحوي تنظيم نشده باشه كه توي خود صفحه اون نوع فايل رو باز كنه. براي اينكه حتماً دانلود بشه هم راه حل داره (يعني ازطريق كد مرورگر رو مجبور كنيد پنجره دانلود رو باز كنه و توي خود صفحه باز نكنه). اين راه حل در اكثر موارد ضروري نيست ولي اگه خواستين، بفرماييد تا توضيح بدم چطور اين كار رو انجام بدين.

.fatemeh
پنج شنبه 19 اسفند 1389, 12:45 عصر
وقتی آدرس فایل داخل href می زارم، با کلیک کردن فقط فایل رو نشون می ده و دانلود نمی کنه
ولی نمی خوام محتویات فایل نشون داده بشه، فقط دانلود بشه

binyaft
پنج شنبه 19 اسفند 1389, 13:20 عصر
@header('content-type:image/jpg');
echo file_get_contents('http://google.com/1.jpg');

hamedfarahabady
پنج شنبه 19 اسفند 1389, 13:35 عصر
شما باید از تگ a استفاده کنید

m_karimi
پنج شنبه 19 اسفند 1389, 14:42 عصر
<a href="downloadfile.php">download file</a>



downloadfile.php


<?php
$size = filesize($FilePath . $FileName) ;
header("Content-Type: application/force-download; name=\"". $FileName ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". $FileName ."\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo (readfile($FilePath . $FileName));
?>

رضا قربانی
پنج شنبه 19 اسفند 1389, 16:34 عصر
برای اینکه راحت تر متوجه بشی - یک فایل zip بگذار و دانلودش کن (از فایل متنی یا عکس استفاده نکن )

.fatemeh
یک شنبه 22 اسفند 1389, 09:23 صبح
<?php
$size = filesize($FilePath . $FileName) ;
header("Content-Type: application/force-download; name=\"". $FileName ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". $FileName ."\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo (readfile($FilePath . $FileName));
?>


این کد روی لوکال کار می کنه،مشکلی هم نداره
ولی روی هاست کار نمی کنه ، از تابع هدر خطا می گیره
البته به ابتدای کد هم
$FileName=$_GET['n'];
$FilePath="images/service/"
رو اضافه کردم
لطفا راهنمایی کنین، چیکار کنم؟!!:افسرده:

mtchabok
یک شنبه 22 اسفند 1389, 10:20 صبح
اگه روی هاستتون کار نمیکنه شاید مشکل از انکدینگ صفحه باشه ...
این مشکل شایعی هس که خیلی از php کارا باهاش مواجه میشن ...

.fatemeh
یک شنبه 22 اسفند 1389, 10:51 صبح
انکدینگ روی utf8 هست، باید چی باشه که درست کار کنه؟!

MMSHFE
یک شنبه 22 اسفند 1389, 11:42 صبح
با سلام، بايد UTF-8 without BOM باشه. با يك اديتور خوب اين كار رو انجام بدين (مثل Rapid PHP يا Programmers NotePad يا ++NotePad).
موفق و مؤيد باشيد.

.fatemeh
یک شنبه 22 اسفند 1389, 12:12 عصر
من با dreamweaver کار می کنم، تگ متا به صورت زیر هست:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
بازم درست نشد!

MMSHFE
یک شنبه 22 اسفند 1389, 12:31 عصر
دوست گرامي، منظور، Encondig موقع ذخيره سازي صفحه است نه تگ META. تگ مربوطه رو درست نوشتين ولي خود صفحه هم بايد با كدگذاري كه اشاره كردم، و توسط يكي از برنامه هايي كه اسم بردم، ذخيره بشه.

eshpilen
یک شنبه 22 اسفند 1389, 13:35 عصر
اينطور كه معلومه Content-Type: application/force-download استاندارد نيست و ممكنه در بعضي مرورگرها ساپورت نشه.
از طرف ديگه application/octet-stream تاجايي كه ديدم همه جا كار ميكنه و يك Media Type استاندارد هست.
بنابراين بنظرم بهتره از application/octet-stream استفاده كنيد.

منبع: Media Type هاي نوع application (http://www.iana.org/assignments/media-types/index.html).

.fatemeh
دوشنبه 23 اسفند 1389, 11:21 صبح
سلام
اولا از اینکه تابه حال راهنمایی کردین ممنون.
دوما در نرم افزار dreamweaver موقع ذخیره سازی صفحه این انتخاب ها وجود داره
1-C (Canonical Decomposition, followed by Canonical Composition)
D (Canonical Decomposition)-2
KC (Compatibility Decomposition, followed by Canonical Composition)-3
KD (Compatibility Decomposition)-4
none-5
که من روی none می زارمش در انتها هم یه چک باکس با این عنوان داره include unicode signature(BOM)
که من انتخابش نمی کنم، پس باید درست بشه دیگه
ولی بازم کار نمی کنه،مشکل چیه؟!

icegirl_f2r
دوشنبه 23 اسفند 1389, 11:32 صبح
وقتی آدرس فایل داخل href می زارم، با کلیک کردن فقط فایل رو نشون می ده و دانلود نمی کنه
ولی نمی خوام محتویات فایل نشون داده بشه، فقط دانلود بشه

ببخشید حالا اگه برعکسشو بخوایم چیکار کنیم؟
و اینکه مثلا من یه فایلی گذاشتم تو سیستم من تو مرورگر نشون میده اما تو سیستم یه نفر دیگه دانلود میشه اشکال از کجاست؟؟؟

icegirl_f2r
دوشنبه 23 اسفند 1389, 21:18 عصر
کسی جواب منا نمیده؟؟؟؟؟؟!!!!!!! لطفا.خواهش میکنم راهنمایی کنید.

mtchabok
سه شنبه 24 اسفند 1389, 09:59 صبح
سلام
این به دلیل برنامه های جانبی هس که روی سیستم شما فقط نصب هس . به طور مثال اگه شما برنامه ای برای اجرای pdf داشته باشید و در مرورگرتون هم برای اجرای pdf توسط همون برنامه تعریف کنید دیگه فایلهای pdf به صورت پیشفرض براتون صفحه دانلودش نمی آد بلکه مستقیما نمایش داده میشه .
احتمالا برای نفرات دیگه ای که اون فایل رو درخواست میکنن نرم افزار مربوطه رو برای اجرای مستقیم فایل ندارن .

icegirl_f2r
سه شنبه 24 اسفند 1389, 19:25 عصر
ببخشید بزارید کامل واستون توضیح بدم چی میخوام.
من فایل هایی که تو سایتم میذارم به فرمت html درآوردم ک مسلما باید تو مرورگر نشون بده نه دانلود بشه.
بعد اینکه حالا این فایل که با لینکی باز میشه واسه من تو مرورگر باز میشه اما واسه نفر دیگه بصورت دانلودی. و حتی اگه اون طرف هم فایلی دانلود کنه که باز بصورتhtml باشه و نشون بده واسه من کار میده اما واسه خودش حالت دانلودی داره.
این برنامه هم رو هاست قرار گرفته.
لطفآ راهنمایی کنید.ممنون.

avenka
یک شنبه 18 تیر 1391, 10:43 صبح
با سلام لطفا كد php مربوط به اينكه مرورگر رو مجبور كنيم پنجره دانلود رو باز كنه و توي خود صفحه باز نكنه رو توضيح ميدين
با تشكر

avenka
یک شنبه 18 تیر 1391, 10:46 صبح
با سلام، كافيه توي قسمت href تگ A، آدرس فايل رو بگذارين تا وقتي روش كليك ميكنن، پنجره دانلود بياد. البته اگه مرورگر به نحوي تنظيم نشده باشه كه توي خود صفحه اون نوع فايل رو باز كنه. براي اينكه حتماً دانلود بشه هم راه حل داره (يعني ازطريق كد مرورگر رو مجبور كنيد پنجره دانلود رو باز كنه و توي خود صفحه باز نكنه). اين راه حل در اكثر موارد ضروري نيست ولي اگه خواستين، بفرماييد تا توضيح بدم چطور اين كار رو انجام بدين.

با سلام لطفا كد php مربوط به اينكه مرورگر رو مجبور كنيم پنجره دانلود رو باز كنه و توي خود صفحه باز نكنه رو توضيح ميدين
با تشكر

reza10wert
یک شنبه 18 تیر 1391, 14:03 عصر
با notepad+ بازش کن و این نوع ذخیرش کن without BOM

mtchabok
دوشنبه 19 تیر 1391, 06:51 صبح
برای باز شدن پنجره دانلود در مرورگر می بایست نام فایل مورد نظر رو به هدر ( header ) پاسخ سرور الصاق ( attach ) و محتوای فایل رو در بدنه پاسخ ارسال کنید .
برای اینکار می بایست هدر Content-Disposition: attachment; رو ارسال کنین تا مرورگر بتونه تشخیص بده که قرار فایل دانلود بشه .
یه نمونه که در زیر هست :



<a href="downloadfile.php">download file</a>



downloadfile.php


<?php
$size = filesize($FilePath . $FileName) ;
header("Content-Type: application/force-download; name=\"". $FileName ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". $FileName ."\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo (readfile($FilePath . $FileName));
?>

nariman_t
دوشنبه 19 تیر 1391, 15:34 عصر
فایل مورد نظر رو با همون notpad باز کنید و به صورت دلخواه که همون utf8 هستش ذخیره کنید این راه بهتر از همست