برگزیده های پرشین تولز

روش ریختن فایل در دیتابیس

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
دیدم شاید همه بخواههند بخونند گفتم اینجا جدا بزنم
در یه تاپیک دیگه یکی پرسیده بود زدم ولی موضوعش خوب نبود پیدا و سرچ نمی شد

ساخت فیلد مورد نظر
یکی از اینها
  • TINYBLOB
  • BLOB
  • MEDIUMBLOB
  • LONGBLOB
PHP:
CREATE TABLE upload (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    type VARCHAR(30) NOT NULL,
    size INT NOT NULL,
    content MEDIUMBLOB NOT NULL,
    PRIMARY KEY(id)
    );
فرم گرفتن فایل عکس و یا هر فایلی
PHP:
<form method="post" enctype="multipart/form-data">
   <table width="350" border="0" cellpadding="1"     cellspacing="1" class="box">
   <tr> 
   <td width="246">
   <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
   <input name="userfile" type="file" id="userfile">     
   </td>
   <td width="80"><input name="upload" type="submit"     class="box" id="upload" value=" Upload "></td>
   </tr>
   </table>
   </form>
ریختن در دیتابیس
PHP:
<?php
  if(isset($_POST['upload']) && $_FILES['userfile']['size'] >    0)
  {
  $fileName = $_FILES['userfile']['name'];
  $tmpName  = $_FILES['userfile']['tmp_name'];
  $fileSize = $_FILES['userfile']['size'];
  $fileType = $_FILES['userfile']['type'];
  
  $fp      = fopen($tmpName, 'r');
  $content = fread($fp, filesize($tmpName));
  $content = addslashes($content);
  fclose($fp);
  
  if(!get_magic_quotes_gpc())
  {
      $fileName = addslashes($fileName);
  }
   include 'library/config.php';
   include 'library/opendb.php';
   
   $query = "INSERT INTO upload (name, size, type, content ) ".
   "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
    mysql_query($query) or die('Error, query failed'); 
   include 'library/closedb.php';
   
   echo "<br>File $fileName uploaded<br>";
   } 
   ?>
این هم برای دانلود کردن فایله از دیتابیس
PHP:
<?php
  if(isset($_GET['id'])) 
  {
  // if id is set then get the file with the id from database
  
  include 'library/config.php';
  include 'library/opendb.php';     $id    = $_GET['id'];
   $query = "SELECT name, type, size, content " .
            "FROM upload WHERE id     = '$id'";
   
   $result = mysql_query($query) or die('Error, query failed');
   list($name, $type, $size, $content) =                                  mysql_fetch_array($result);
     header("Content-length: $size");
   header("Content-type: $type");
   header("Content-Disposition: attachment; filename=$name");
   echo $content;
   include 'library/closedb.php'; 
   exit;
   }
   ?>
همه مخلفات رو نزاشتم خودتون فهمیدید که کدوم ها


راستی روش های دیگری هم هست این راحت ترین نوعش هست
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
این هم یه کد اماده و کامل
امید وارم به دردتون خورده باشه
چون این سوال رو اینجا خیلی دیدم و به جواب عملی کسی نرسوندش

دانلود

این روش اپلود فایل شاید در مواقعی که بازدید بالا باشه یکم به سرور فشار بیاره ولی از نظر امنیتی حرف نداره
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
ممنون اما اصلا توجیه منطقی نداره!!
امنیت فایلها رو با روش ذیگه میشه فراهم کرد!! فشار خیلی زیادی میاره!!
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
ببین فشار خیلی نیست
همین الان پرشین تولز همین اواتور هاش تماما روی دیتابیس هست با این همه بازدید و یوزر
ولی مسائل امنیتیش در هر نوع آپلودی حتی اجازه آپلود فایل php به یوزر ساده رو هم بدیم مشکلی پیش نمی اره

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

hmsn

کاربر تازه وارد
تاریخ عضویت
17 آگوست 2006
نوشته‌ها
196
لایک‌ها
0
سن
37
محل سکونت
تو يه خونمون
آقا حامد ممنون از اينكه زحمت كشيديد عالي بود
حتما از اين روش استفاده مي كنيم به نظر بدون مشكل مياد
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
ببین فشار خیلی نیست
همین الان پرشین تولز همین اواتور هاش تماما روی دیتابیس هست با این همه بازدید و یوزر
ولی مسائل امنیتیش در هر نوع آپلودی حتی اجازه آپلود فایل php به یوزر ساده رو هم بدیم مشکلی پیش نمی اره

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

شوخی میکنی؟!
آواتار ها رو میریزه تو db
اگه اینطوری باشه من نظرم عوض شده!!
البته آواتارها حجمشون خیلی کمه!!
اما اتچ چطور!؟ اونا رو هم میریزه تو دیتا بیس!!؟
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
ویبالتین یعنی همین برنامه انجمن
اتچ ها و آواتور هارو به صورت دیفالت میریزه توی دیتابیس و براسا لینک ها معلومه اینجا هنوز هم روی دیتابیس هست
ولی امکان تغییر و ریختن رو هاست رو هم داره

ولی خیلی سایت های بزرگ این کار رو می کنند
مشکلی نداره بابا :d
 

najandz

کاربر تازه وارد
تاریخ عضویت
15 آگوست 2007
نوشته‌ها
12
لایک‌ها
1
حامد عزیز مرسی
ایا این کد برای پروفایل هم عمل می کند یعنی برای گذاشتن عکس برای ?user




مرسی





دیدم شاید همه بخواههند بخونند گفتم اینجا جدا بزنم
در یه تاپیک دیگه یکی پرسیده بود زدم ولی موضوعش خوب نبود پیدا و سرچ نمی شد

ساخت فیلد مورد نظر
یکی از اینها
  • TINYBLOB
  • BLOB
  • MEDIUMBLOB
  • LONGBLOB
PHP:
CREATE TABLE upload (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    type VARCHAR(30) NOT NULL,
    size INT NOT NULL,
    content MEDIUMBLOB NOT NULL,
    PRIMARY KEY(id)
    );
فرم گرفتن فایل عکس و یا هر فایلی
PHP:
<form method="post" enctype="multipart/form-data">
   <table width="350" border="0" cellpadding="1"     cellspacing="1" class="box">
   <tr> 
   <td width="246">
   <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
   <input name="userfile" type="file" id="userfile">     
   </td>
   <td width="80"><input name="upload" type="submit"     class="box" id="upload" value=" Upload "></td>
   </tr>
   </table>
   </form>
ریختن در دیتابیس
PHP:
<?php
  if(isset($_POST['upload']) && $_FILES['userfile']['size'] >    0)
  {
  $fileName = $_FILES['userfile']['name'];
  $tmpName  = $_FILES['userfile']['tmp_name'];
  $fileSize = $_FILES['userfile']['size'];
  $fileType = $_FILES['userfile']['type'];
  
  $fp      = fopen($tmpName, 'r');
  $content = fread($fp, filesize($tmpName));
  $content = addslashes($content);
  fclose($fp);
  
  if(!get_magic_quotes_gpc())
  {
      $fileName = addslashes($fileName);
  }
   include 'library/config.php';
   include 'library/opendb.php';
   
   $query = "INSERT INTO upload (name, size, type, content ) ".
   "VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
    mysql_query($query) or die('Error, query failed'); 
   include 'library/closedb.php';
   
   echo "<br>File $fileName uploaded<br>";
   } 
   ?>
این هم برای دانلود کردن فایله از دیتابیس
PHP:
<?php
  if(isset($_GET['id'])) 
  {
  // if id is set then get the file with the id from database
  
  include 'library/config.php';
  include 'library/opendb.php';     $id    = $_GET['id'];
   $query = "SELECT name, type, size, content " .
            "FROM upload WHERE id     = '$id'";
   
   $result = mysql_query($query) or die('Error, query failed');
   list($name, $type, $size, $content) =                                  mysql_fetch_array($result);
     header("Content-length: $size");
   header("Content-type: $type");
   header("Content-Disposition: attachment; filename=$name");
   echo $content;
   include 'library/closedb.php'; 
   exit;
   }
   ?>
همه مخلفات رو نزاشتم خودتون فهمیدید که کدوم ها


راستی روش های دیگری هم هست این راحت ترین نوعش هست
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
خوب نه دیگه ببین برای این اخرین قسمت کد هارو ببینی header برای دانلود خورده
برای کارهای خودت باید header هارو عوض کنی

تست کن کاری نداره
 

najandz

کاربر تازه وارد
تاریخ عضویت
15 آگوست 2007
نوشته‌ها
12
لایک‌ها
1
حامد عزیز من چند جا کد ایراد دارم

encrypt?

چه شکلی پس فایل فرم ارسال به php

می شود

دیگه اینکه می شود خوههش کنم اسکردپت کامل برام ارسال کنید :blush:

ضروری



حامد عزیز مرسی
ایا این کد برای پروفایل هم عمل می کند یعنی برای گذاشتن عکس برای ?user




مرسی
 

peiman

Registered User
تاریخ عضویت
23 فوریه 2003
نوشته‌ها
1,554
لایک‌ها
21
سن
36
حامد عزیز من چند جا کد ایراد دارم

encrypt?

چه شکلی پس فایل فرم ارسال به php

می شود

دیگه اینکه می شود خوههش کنم اسکردپت کامل برام ارسال کنید :blush:

ضروری
گفت که!!
برای پروفایل چون عکس نشون داده میشه و نباید دانلود بشه باید هیدر ها رو عوض کنی!!

کد کامل رو هم تو پست دوم قرار داده!!
 

hba

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
8 آگوست 2004
نوشته‌ها
1,511
لایک‌ها
1
سن
39
محل سکونت
تهران-ونک-php-mysql
ببین من متد کلی برای خودم می دونم گذاشتم
دیگه باید خودت بر اسا نیازت بالا پایینش کنی

اخرش هم برو phpclasses.org یه کلاس اماده اش رو دانلود کن کاری نداره یا حتی google
ولی برای فهم کاری چون مهمش دیتابیسش بود گذاشتم
 

najandz

کاربر تازه وارد
تاریخ عضویت
15 آگوست 2007
نوشته‌ها
12
لایک‌ها
1
حامد عزیز مرسی
ایا این کد برای پروفایل هم عمل می کند یعنی برای گذاشتن عکس برای ?user

لطفا در ئورد دنلود فایل کمکم کند گرفت از دیتا بیس

لطفا در ئورد دنلود فایل کمکم کند گرفت از دیتا بیس


مرسی

لطفا در ئورد دنلود فایل کمکم کند گرفت از دیتا بیس
 
بالا