انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: pooya_mr2009 در 03 اسفند 1388، 01:06 بظ
-
سلام
یه کد php می خوام که وقتی بهش ادرس یه فایلو می دیم اون رو دانلود کنه
هر کی می تونه کمک کنه
ممنون
-
منبع
............
------------------------- ویرایش --------------------------
الان لینک منبع رو کلیک کردم بخاطر تحریم ایران اجازه دسترسی نداد و توهین هم کرد. واقعا آدمهای بیشعوری هستن ............
-
واقعا ممنونم
ولی نمی دونم دقیقا چه جوری ازش استفاده کنم
چون من اصلا هیچی از php بلد نیستم
اگه می شه مرحمت کنید به من نحوه ی استفاده را بگید
ممنون
-
واقعا ممنونم
ولی نمی دونم دقیقا چه جوری ازش استفاده کنم
چون من اصلا هیچی از php بلد نیستم
اگه می شه مرحمت کنید به من نحوه ی استفاده را بگید
ممنون
سلام
دوست عزیز دقیقا چی کار میخوای بکنی؟
تو به کامپیوتر سرور دسترسی داری؟
یا میخوای رو کامپیوتر خودت سکریپتی رو اجرا کنی که فایلی رو دانلود کنی؟
-
دبیرستان ما به هر نفر یه صفحه شخصی داده که هر کی می نونه هر چی می خواد آپلود کنه.
یکی از بچه ها کد phpرا آپلود کرده بود و ان را اجرا می کرد و فایل های داده شده در php را دانلود می کرد.
ما به طور خودکار سرعتمون یک سوم سرعت سرور هست.اگه این phpکار کنه سرعت دانلودم 3 برابر می شود.اخه اینترنت خونمون فسیلیه.
-
دبیرستان ما به هر نفر یه صفحه شخصی داده که هر کی می نونه هر چی می خواد آپلود کنه.
یکی از بچه ها کد phpرا آپلود کرده بود و ان را اجرا می کرد و فایل های داده شده در php را دانلود می کرد.
ما به طور خودکار سرعتمون یک سوم سرعت سرور هست.اگه این phpکار کنه سرعت دانلودم 3 برابر می شود.اخه اینترنت خونمون فسیلیه.
خب از دوستت کد رو بگیر :)
خودم سعی میکنم بنویسمش، اگه نتونستم از یه سایت درست و حسابی واسط کد رو پیدا میکنم.
برای استفاده از کدها فقط لازمه که اونها رو تو یه فایل با پسوند php. ذخیره کنی بعد آپلودش کنی
-
نمی ده
می ترسه تو مدرسه پابلیک شه.به من اعتماد نداره.در ضمن دوستم نیز نیست!1 سال از من بزرگتره نیز!
حالا باشه سیو می کنم.ادرس فایلو چه جوری بهش بدم(این پست را دارم قبل از اجرا می دم)
-
چی شد.
چرا کد ها رو برداشتی
ازش کپی ندارم
-
چی شد.
چرا کد ها رو برداشتی
ازش کپی ندارم
بالا گفتم، سایت خوبی نبود.
این یه کد از یه سایت دیگه:
<?php
// place this code inside a php file and call it f.e. "download.php"
$path = $_SERVER['DOCUMENT_ROOT']."/path2file/"; // change the path to fit your websites document structure
$fullPath = $path.$_GET['download_file'];
if ($fd = fopen ($fullPath, "r")) {
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
switch ($ext) {
case "pdf":
header("Content-type: application/pdf"); // add here more headers for diff. extensions
header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download
break;
default;
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
}
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose ($fd);
exit;
// example: place this kind of link into the document where the file download is offered:
// <a href="download.php?download_file=some_file.pdf">Download here</a>
?>
لینک سایت (http://www.finalwebsites.com/forums/topic/php-file-download)
باید آدرس فایلی که میخوای دانلود کنی تو متغییر path وارد کنی بعد فایل رو آپلود کنی. و وقتی تو مرورگر اینترنتی این فایل آپلود شده رو باز کنی، کد php اجرا میشه
امتحانش هم کردم، درست کار میکنه
-
!!پس از ویرایش پاک شد!!
--------------------- ویرایش---------------------
آقا من فکر کردم شما یکی دیگه ای
همین سوالو که توی تاپیک زیر هم پرسیدی!!!
یکیش کافی بنود به نظرت؟
http://forum.ubuntu.ir/index.php/topic,12850.0.html
-
اول در جواب اقای heresh من هیچی phpبلد نیستم و در کد هزار تا متغیر path وجود دارد.فرض کنید من می خوام صفحه ی www.google.com را دانلود کنم.
میشه جایگزین pathکنید ببینم چی می شه.ممنون
در جواب اقای سجادی باید بگویم اون سوال در پست مربوط به اسکریپت مطرح شد و بعد به php کشیده شد.برای همین یه پست جدا دادم
-
اول در جواب اقای heresh من هیچی phpبلد نیستم و در کد هزار تا متغیر path وجود دارد.فرض کنید من می خوام صفحه ی www.google.com را دانلود کنم.
میشه جایگزین pathکنید ببینم چی می شه.ممنون
دوست عزیز من نگفتم جایگزین. باید متغیر path رو مقدار دهی کنی. و مقدارش رو آدرس فایلی که قراره دانلود بشه قرار بدی.
تو این خط
$path = $_SERVER['DOCUMENT_ROOT']."/path2file/"; // change the path to fit your websites document structure
مثال:
با این کد نمیشه www.google.com رو دانلود کرد چون گوگل یه سایته و هر سایت تعداد زیادی فایل داره و این سکریپت تو هر بار اجرا فقط یه فایل رو میتونه دانلود کنه.
مثلا ما میخوایم یه فایل به اسم example.txt رو که تو آدرس directory/dir1/example.txt/ هست رو دانلود کنیم. باید کد رو به این شکل تغییر بدیم:
$path = $_SERVER['DOCUMENT_ROOT']."/directory/dir1/"; // change the path to fit your websites document structure
بعد خط پایینش رو به این شکل:
$fullPath = $path."example.txt";
-
به به! چی ساختم ;D
کد بالا رو تغییر دادم، کاملش کردم. دیگه لازم نیست اصلا کدش رو تغییر بدی و فقط کافیه یه بار آپلودش کنی، نه اینکه برای هر فایل کدش رو تغییر بدی و بازم آپلود کنی.
فقط کد پایین رو تو یه فایل با پسوند php. آپلود کن. بعد از اجرا یه textBox داره، آدرس فایل رو کامل بنویس ( همراه با اسم فایل) بعد دگمه Download رو بزن
<?php
ob_start();
// If the name field is filled in
if (isset($_POST['filename']))
{
$name = htmlentities($_POST['filename']);
$fullPath = $_SERVER['DOCUMENT_ROOT'].$name;
if ($fd = fopen ($fullPath, "r")) {
$fsize = filesize($fullPath);
$path_parts = pathinfo($fullPath);
$ext = strtolower($path_parts["extension"]);
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$path_parts["basename"]."\"");
header("Content-length: $fsize");
header("Cache-control: private"); //use this to open files directly
while(!feof($fd)) {
$buffer = fread($fd, 2048);
echo $buffer;
}
}
fclose($fd);
exit;
}
?>
<form action="second.php" method="post">
<p>
File Address: (with File's Name)<br />
<input type="text" id="filename" name="filename" size="20" maxlength="256" />
</p>
<input type="submit" id="submit" name = "submit" value="Download!" />
</form>
<?php ob_flush(); ?>
(البته کاره بخصوصی نکردم، درست کردن فرم ساده است ولی اولین باره که از فرم استفاده کردم ;) )
-
ییخشید یه سوال دیگه
وقتی می گید /directory
یعنی این که این ادرس در کامپیوتر خودمان است و برای همین بعد از path نوشتیم document_root
ایا استدلال من درسته یا اگه ادرس فایل در سرور خودمان نبود باز هم ان document_rootباقی می ماند.
اها راستی من اون کد را با پسوند php رو دسکتاپ سیو کردم و با فایرفاکس بازش کردم.بعد ادرس مستقیم یک فایلو بهش دادم.ولی فایرفاکس پیغام second.php not found
را داد.پس چه جوری از کد استفاده کنم.می خوام تستمش کنم اگه جواب داد اپلود کنم.
سوال اولم در مورد کد قبلی بود که ولش کنید.سوال دوم رو بی زحمت اگه می شه کمک کنید
-
اره
یه باره دیگه این کارو کردم.
نتیجه همان بود که گفتم
پیشنهادی دارید؟
-
اره
یه باره دیگه این کارو کردم.
نتیجه همان بود که گفتم
پیشنهادی دارید؟
برای آزمایش کردن کد باید کامپیوترت سرور باشه. هست؟
(مثلا apachi نصب باشه)
-
نه نیست.
من می خوام از یه سابت دیگه یه فایل را دانلود کنم. با این کد شما نمی شه؟
اگه نمی شه پس چی کار کنم؟
-
اها راستی من اون کد را با پسوند php رو دسکتاپ سیو کردم و با فایرفاکس بازش کردم.بعد ادرس مستقیم یک فایلو بهش دادم.ولی فایرفاکس پیغام second.php not found
را داد.
یادم نبود، فایل خودت رو به همین اسم ذخیره کن second.php یا هر اسمی گذاشتی این خط رو باید تغییر بدی به اسم فایل خودت:
<form action="second.php" method="post">
-
نه نیست.
من می خوام از یه سابت دیگه یه فایل را دانلود کنم. با این کد شما نمی شه؟
اگه نمی شه پس چی کار کنم؟
اگه نیست پس نمیتونید آزمایشش کنید مگه اینکه سرور باشید یا سرور مجازی داشته باشید یا ...
این سکریپت فقط مال دانلود از سروره نه یه سایت دیگه. برای دانلود از سایتهای دیگه نرمافزاریهای زیادی نوشتن از اونها استفاده کنید
شاید منظورتون اینه که موقع استفاده از سایتهای دیگه هم سرعتتون زیاد بشه، درست میگم؟
-
من می تونم رو سرور دبیرستان آپلود کنم.
ایا در این صورت می تونم از یه سایت دیگه فایلی با ادرس مثلا http://www.cde.ca.gov/be/st/ss/documents/mathstandard.pdf دانلود کنم؟
-
من می تونم رو سرور دبیرستان آپلود کنم.
ایا در این صورت می تونم از یه سایت دیگه فایلی با ادرس مثلا http://www.cde.ca.gov/be/st/ss/documents/mathstandard.pdf دانلود کنم؟
نه نمیشه. همون قسمت Document_root مربوط میشه به آدرس سروری که این سکریپت روش اجرا میشه.
نرمافزارهای زیادی (خیلی زیاد) واسه لینوکس و ویندوز وجود داره که این کار رو انجام میدن، یعنی لینک یک فایل رو میگیرن بعد دانلودش میکنن.
تا اونجا که من بدونم نمیتونید سکریپتی رو سرور دبیرستانتون اجرا کنید که سرعت دانلودتون از سایتهای دیگه زیاد بشه، رو سروری که کد اجرا میشه شاید ولی از یه سایت دیگه ممکن نیست
-
حالا زیاد شدن سرعت هیچ.خود دانلود کردن غنیمته.
ولی جدی میگم.یکی ار بچه ها یه php نوشته بود.
شما کسی رو نمی شناسید یا سایتی رو بلد نیستید که تخصصشون در این جور php ها باشه یا خودتون با توضیح بالایم حالا اسکریپتی دارید؟
به هر حال ممنون که تو این مدت هی جوابم رو دادید.
-
نه من همچین استکریپتی ندارم. فروم تخصصی php ایرانی هست. گوگل سرچ کنی پیدا میکنی.
کاری نکردم عزیز، با جواب دادن به سوال دیگران خودم هم یادمیگیرم :)
-
باید یه سرور نصب کنید (Aache) و تنظیم کنید که فایلهای php رو بشناسه و ...
همینظوری که اجرا نمیشه !