الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]طلب مساعدة في تنزيل الملفات

بدأه mnt في 19 يناير 2012 · 4 رد · 566 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اولا اشكر جميع القائمين على هذا المنتدى الاكثر من رائع و مفيد فمنذ بداتة تعلمي للغة الphp و انا من المتابعين له اول بأول لما فيه من مجهود رائع يبذل فيه

المشكلة اللي عندي في تنزيل الملفات من المشروع اللي بعمل فيه و هوعبارة عن موقع للكتب

المشكلة بالتحديد انو فيه ملفات بتنزل لما اعمللها download و فيه ملفات لأ

انا لاحظت انو الملفات اللي من نوع doc او ppt هي اللي بتنزل بدون مشاكل اما ملفات من نوع pdf او rar ما بتنزل و بعطيني الشكل هاد

The requested URL /lib/booksfiles/1326894816شرح للدروس + اسئلة التوجيهي لكل درس على حدى.r was not found on this server.

بالنسبة لل pdf مرات بتفتح على صفحة انترنت و ملفات بتطلعلي صفحة فاضية

شو المشكلة بتمنى انو حد يساعدني

download.php

#2
<?php
include('header.php');
echo '<h1>download</h1>';
$sql=mysql_fetch_array(mysql_query("select * from addbook where id='$_GET[id]'"));
$views=$sql['views']+1;
mysql_query("update addbook set views='$views' where id='$_GET[id]'");
$row=mysql_fetch_array(mysql_query("select * from categorie where id='$sql[categorie_id]'"));
echo '<hr>';
echo '<br>';
echo 'title : '.$sql['book_title'];
echo '<br>';
echo 'categorie : '.$row['title'];
echo '<br>';
echo 'author name : '.$sql['author_name'];
echo '<br>';
echo 'date of add : '.$sql['date_of_add'];
echo '<br>';
echo 'views = '.$sql['views'];
echo '<br>';
echo '<a href="booksfiles/'.$sql['book'].'">download from her</a>';
include('disconnect.php');
?>

مافي مشكله في هذا الكود , فقط في كود رفع الملف أنت تضع إسم الملف بالعربي

إستخدم إسم الملف الحقيقي في قاعدة البيانات وقم بفرض إسم من عندك يمكن أن يكون الآي دي لسجل الكتاب والذي يحتوي على إسم الملف الحقيقي وحجمه ونوعه وإمتداداه وعند عمل داون لود يمكنك إستخدام داله

header

لعمليه التحميل

ملاحظه : السطر التالي

$views=$sql['views']+1;
mysql_query("update addbook set views='$views' where id='$_GET[id]'");

يمكن إختصاره إلى

mysql_query("update addbook set views=views+1 where id='$_GET[id]'");

تم تعديل هذه المشاركة بواسطة بسام العيساوي في 20 يناير 2012 في 03:25

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#3

اولا اشكرك على ردك و على ملاحظتك

بس انا ما فهمت عليك مزبوط شو الحل ممكن اذا اعطيتك كود رفع الملفات توضحلي اكثر و يا ريت لو توضحلي كلامك بمثال

بعدين اذا كان اسم الملف بالاصل بالعربي لازم اضيفه بالعربي بنفس الاسم و عشان احل مشكلة تواجد اكثر من ملف بنفس الاسم استخدمت دالة time()

بس السؤال ليش في ملفات لما اعمللها داونلود بكون كل شي تمام و في ملفات بوديني على صفحة فاضية و في ملفات بتطلعلي عليها انه مش موجود مع انه فعليا موجود و في ملفات بفتحلي اياها على صفحة الانترنت

بتمنى الاقي الحل

ملف اضافة الملفات بالمرفقات

addbook.php

#4

صعب أوضحلك بمثال لأني مشغول

بس خلينا نشرح أكثر مع كود بسيط

في ملفات لما يكون إسمها بالعربي وتنرفع وإنتا تطلبها رح يطلبها بترميز معين فما رح يلاقيها وملفات مكتوبه بالإنجليزي بس بتحتوي على فراغ يعني

this book.pdf

لاحظ الفراغ بين الكلمتين بسبب عدم تمكن السيرفر من جلب الملف

لذلك إذا حابب تحتفظ بإسم الملف مثل ماهو عليك بإستخدام جدول يحتوي على إسم الملف الأصلي وتخزن فيه أيضا إسم الملف الجديد والذي يحتوي على أرقام فقط حتى بدون إمتداد يعني الملف السابق يصبر إسمه على السيرفر كالتالي

الإسم الحقيقي : this book.pdf

الإسم على السيرفر : 987354156

المشكله الثانيه التي تواجهها هي فتح الملف بدون تحميل يعني الملف السابق سيتم فتحه على المتصفح ولو كان الملف صوره سيتم فتحه على المتصفح كيف سنقوم بإجبار المستخدم على تنزيل الملف بدون إستخدام كليك يمين حفظ بإسم ؟

هنا تأتي دور داله هيدر التي تحدثت عنها

<?php
  if( file_exists($filefullPath) ){
/*
sql to show real file name and ext ... other data 
*/
	// Parse Info / Get Extension
	$fsize = filesize($filefullPath);
	$path_parts = pathinfo($filefullPath);
	$ext = strtolower($file_ext_from_database);

	// Determine Content Type
	switch ($ext) {
  	case "pdf": $ctype="application/pdf"; break;
  	case "exe": $ctype="application/octet-stream"; break;
  	case "zip": $ctype="application/zip"; break;
  	case "doc": $ctype="application/msword"; break;
  	case "xls": $ctype="application/vnd.ms-excel"; break;
  	case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  	case "gif": $ctype="image/gif"; break;
  	case "png": $ctype="image/png"; break;
  	case "jpeg":
  	case "jpg": $ctype="image/jpg"; break;
  	default: $ctype="application/force-download";
	}

	header("Pragma: public"); // required
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Cache-Control: private",false); // required for certain browsers
	header("Content-Type: $ctype");
	header("Content-Disposition: attachment; filename=\"".basename($real_file_name_from_database)."\";" );
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: ".$fsize);
	ob_clean();
	flush();
	readfile( $filefullPath );

  } else
	die('File Not Found');

في الرابط الخاص بالتنزيل تضع إسم الملف الموجود على السيرفر كمتغير ويكون إسم الملف على السيرفر مخزن في قاعدة البيانات ليمكنك الوصول إلى الإسم الحقيقي وبيانات أخرى عن الملف مثل الإمتداد

http://mysqite.com/?filefullPath=987354156

1

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#5

اشكرك اخي على المساعدة و التوضيح

مواضيع مشابهة