PDA

View Full Version : آمدن پیغام ذخیره کردن دانلود فایل



roya2002_80
پنج شنبه 25 خرداد 1385, 17:54 عصر
سلام
چطوری می شه وقتی فایل را دانلود می کنیم پیغام ذخیره کردن فایل بر روی کامپیوتر بیاید؟ مثلا من می خوام یه فایل pdf دانلود کنم وقتی روی لینک آن کلیک می کنم در مرورگر باز می شه، چه طوری به آن بگویم که پنجره دانلود بیاید؟؟
با تشکر

goshkob
جمعه 26 خرداد 1385, 15:25 عصر
تا جایی که من باش ور رفتم این بیشتر به browser کاربر بستگی داره چون اونه که روی دستگاهش تعرییف کرده ( یا شده ) که این فایلها رو این کار کن.
ولی اگر خیلی برات مهم نیست آن را zip rar ... تبدیل کن که پیشفرض همه برای آنها داونلوده.

msnasiri
سه شنبه 13 تیر 1385, 08:25 صبح
خب اگه می شه تا اون قسمت هایی رو که ور رفتین بگید شاید مشکل ما حل شد.

javad_hosseiny
سه شنبه 13 تیر 1385, 09:18 صبح
شما می تونید با استفاده از تابع header و خوندن محتوی آن فایل به جای اجرای آن فایل , فایل موردنظر را دان لود می کند
(که دیگر بحث شناسایی نوع فایل (با توجه به پسوند) توسط مرورگر و نحوه عکس العمل به آن (نمایش یا دان لود) پیش نیاید)
یک نمونه سورس جهت دانلود برایتان می گذارم:
پارامتر file جهت تعیین نام فایل جهت دان لود به این فایل ارسال می شود
و همچنین در ابتدای برنامه متغیر zipfile نیز اگر برابر true باشد ابتدا فایل را فشرده و سپس دان لود می کند (شما می تونید در مورد فایلهای مختلف متفاوت عمل کنید به طول مثال در صورت بالا بودن حجم فایل دان لودی (با توجه به تشخیص اندازه سایز فایل متغیر ارسال شده) فایل را ابتدا فشرده کنید و سپس دان لود)
و همچنین جهت انجام عملیات امنیتی (مثلا عدم تشخیص محل اصلی فایل برای دانلود) نیز می تونید متغیر file را به صورت کدشده و یا بدون اشاره به مسیر اصلی به سورس php موردنظر ارسال کنید و در آنجا مسیر اصلی را به ابتدای متغیر file اضافه کنید)

<?
// change php.ini gdlibzip
//output_buffering = Off ; Output buffering allows you to send header lines (including cookies)
//zlib.output_compression = On ;
//extension=php_zlib.dll
ini_set('output_buffering','off');
ini_set('zlib.output_compression','On');
//Start Output buffering
ob_start();
$zipfile = false; // if this variable ture the file for download before download compress file

$file = $HTTP_GET_VARS['file'];

if(!file_exists($file)) {
echo '<html><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256"></head><body></body></html>';
echo '<script>alert(" the file '.$file.' is not found");</script>';
echo '<script>history.back(-1);</script>';
exit;
}
if ($zipfile) {
$file = basename($file);
$ExtDn = pathinfo($file);
$ExtDn = $ExtDn["extension"];
$zipnamefile = substr($file,0, strlen($file)-strlen($ExtDn)) . 'zip';
require('zip.lib.php');
$zipfile = new zipfile($zipnamefile,'', '');
$zipfile->addFileAndRead(basename($file));
echo $zipfile->file();
}
else {
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/x-msdownload");
header("Content-Disposition: attachment; filename=".basename($file).";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile("$file");
}
?>
البته فکر کنم قبلا قبل از خرابی محتوی سایت که باعث بازگشت به تاریخ 17 خرداد شد بنده جواب این سؤال شما را داده بودم حتی بعد از دو پست اشاره به نام کلاس جهت فشرده سازی اطلاعات نیز شده بود

roya2002_80
سه شنبه 13 تیر 1385, 17:28 عصر
خیلی ممنونم

Hamid_PaK
جمعه 07 مهر 1385, 08:49 صبح
جواد جان یونیت unzip که کل zip رو بخونه و خودکار تمام محتویات اون رو باز کنه رو هم داری داداش :لبخند:

با تشکر ، یا حق ...

javad_hosseiny
شنبه 08 مهر 1385, 08:22 صبح
آره عزیزم موجود هست :چشمک:

کتابخانه pclzip یکی از بهترین نمونه کلاسها جهت کار با فایلهای فشرده هست (ایجاد فایل فشرده, افزودن و ... از فایل فشرده , لیست کردن محتوی فایل فشرده ، بازیابی و ....) خلاصه همه کارهایی که بتوان با فایلهای فشرده کرد را دارد.
بنده در چندین نمونه برنامه جهت آپلود اطلاعات توسط کاربر و ... از این کلاس استفاده کرده ام
کافی است تا فایل را در یک فرم با خاصیت enctype="multipart/form-data" بر روی سرور آپلود کنید (منظور همان شاخه تمپ مربوطه هست) و سپس بعد از چک کردن نوع خصلت فایل در سرور و.... فایل موردنظر را توسط کلاس موردنظر فراخوانی و اکستراکت کنید (البته دقت کنید که اگر فایل ثابتی هست و یا شاخه خاصی در مسیر موردنظر جهت اکستراکت می باشد شما باید پرمیشن آن را در سرور تنظیم نمایید (777)

جهت اطمینان بنده نمونه سورس استفاده شده برای این منظور را در اینجا قرار می دهم
نکته: نام آبجکت جهت انتخاب فایل در فرم userfile هست



$fsql=$HTTP_POST_FILES['userfile']['name'];
if (!empty($fsql)) {
$typefile = $HTTP_POST_FILES['userfile']['type'];
$from=$HTTP_POST_FILES['userfile']['tmp_name'];
if (is_uploaded_file($from)) {
if ($typefile == 'application/x-zip-compressed') {
include('zip.php');
$archive = new PclZip($from);
if (($v_result_list = $archive->extract()) == 0) {
die("Error in Uncompres file : ".$archive->errorInfo(true)); }
$to = $v_result_list[0]['stored_filename'];
}else{
$fsql=$HTTP_POST_FILES['userfile']['name'];
$toInfo=pathinfo($fsql);
$Ext=$toInfo['extension'];
$file = basename($fsql,'.'.$Ext);
$to = $file.'.'.$Ext;
move_uploaded_file($from, $to) or die(exit);
}
echo "<script>alert(' با موفقیت آپلود شد".$to." فایل')</script>";
}
else{
echo "<script>alert('".$HTTP_POST_FILES['userfile']['error']."اشکال شماره <BR>".'سیستم قادر به آپلود این فایل نیست'."')</script>";
// echo '<script>history.back(-1);</script>';
exit;
}
}

oxygenws
دوشنبه 11 دی 1385, 11:27 صبح
بهتره به جای


application/x-msdownload

از


application/force-download

استفاده بشه، چون استاندارد ه و در همه سیستم عامل ها جواب میده.

I,Nobody
شنبه 04 فروردین 1386, 12:24 عصر
دوستان من از این اسکریپتی که شما زحمتشو کشیدین می خوام استفاده کنم ولی یه مشکل دارم که توضیح میدم :
ببینید من یه فابل php دارم که یک پارامترهای مسیر تصویر و طول و عرض رو میگیره و تصویر رو resize شده بر می گردونه. حالا می خوام اون تصویری رو که این فایل بر می گردونه بذارم برای دانلود ولی نمیشه. البته در مورد تصویری که برمی گرده مطمئنم چون می تونم نمایشش بدم. ولی مشکل من همین دانلودش هست.
آدرس تصویر من این میشه : show_image.php?filename=manuscript_images/08/0000.jpg&width=1024&height=768

I,Nobody
سه شنبه 07 فروردین 1386, 01:17 صبح
آقا جاوید، آقا امید، آقا میلاد، اساتید محترم؛
من واقعاً گیر کردم. لا اقل بگید شدنی هست یا نه؟

Milad
سه شنبه 07 فروردین 1386, 01:53 صبح
تیکه کدت رو بگذار اینجا
مشکلی نباید داشته باشه


<?
//get $_GET info
header("Pragma: public");
header("Expires: 0");
header("Content-Type: application/x-msdownload");
.
.
.
//create image save in $img
echo $img;


باید کار کنه یک چکی بکن
اون ها که نقطه گذاشتم رو همونی بگذار که بچه ها قبلا گذاشتند

I,Nobody
سه شنبه 07 فروردین 1386, 11:27 صبح
<?
// change php.ini gdlibzip
//output_buffering = Off ; Output buffering allows you to send header lines (including cookies)
//zlib.output_compression = On ;
//extension=php_zlib.dll
ini_set('output_buffering','off');
ini_set('zlib.output_compression','On');
//Start Output buffering
ob_start();
$path=$_GET['path'];
$zipfile = false; // if this variable ture the file for download before download compress file
$file= "show_image.php?filename={$_GET['path']}&width={$_GET['width']}&height={$_GET['height']}";
if(!file_exists($_GET['path'])) {
echo '<html><head><META HTTP-EQUIV="Content-Type" CONTENT="application/octet-stream; charset=utf-8"></head><body></body></html>';
echo '<script>alert(" the file '.$_GET['path'].' is not found");</script>';
echo '<script>history.back(-1);</script>';
exit;
}
//==========
if ($zipfile) {
$file = basename($file);
$ExtDn = pathinfo($file);
$ExtDn = $ExtDn["extension"];
$zipnamefile = substr($file,0, strlen($file)-strlen($ExtDn)) . 'zip';
require('zip.lib.php');
$zipfile = new zipfile($zipnamefile,'', '');
$zipfile->addFileAndRead(basename($file));
echo $zipfile->file();
}
//==========
else {
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".$_GET['name'].".jpg;" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
$img="<img src='$file'>";
//readfile($file);
echo $img;
}
?>

همونطور که گفتم مشکل اینه که من در نهایت یک فایل php رو می دم برای دانلود. البته خروجی اون فایل php یک نصویر هست

Milad
سه شنبه 07 فروردین 1386, 23:27 عصر
نه
else آخری این طوری می گم بشه :


header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".$_GET['name'].".jpg;" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
$img=changeSize($_GET['name'].".jpg",$_GET['width'],$_GET['hieght'])

echo $img;

I,Nobody
پنج شنبه 09 فروردین 1386, 00:28 صبح
مرسی.
فهمیدم چی می گی.
میرم خونه تستش می کنم.

Samadt
جمعه 05 خرداد 1391, 14:35 عصر
سلام دوستان
بنده یه پیج ساده با زبان پی اچ پی میخوام برای ارائه به استاد
فقط پیج ساده که شامل چند خط نوشته باشه.
اگه میشه بگین با چه برنامه ای نوشته شده
با تشکر