אתה נמצא כאן מדריכים  >>  שמירת מידע בינארי ב-MySQL  >>  הכנסת קבצים לבסיס הנתונים

הכנסת קבצים לבסיס הנתונים

* המדריך נכתב באדיבותו של ירון גונן.

שתי הפעולות העיקריות שנרצה לבצע עם הקבצים הם כמובן להכניס אותם לבסיס הנתונים ולשלוף אותם משם. את ההכנסה של קובץ אל תוך בסיס הנתונים אדגים בעזרת פעולת upload:

file name: storedata.php
<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>

<?php
  
  if (isset($submit)) {
/*האם המשתמש לחץ על כפתור השליחה?*/

  
     mysql_connect("localhost","root","");
/*התחברות אל בסיס הנתונים.
יש צורך לשנות את השם והסיסמא.
*/

     mysql_select_db("test");
  
     $data = addslashes(fread(fopen($form_data, "rb"), filesize($form_data)));
/*זו השורה החשובה*/

  
     //inserting the file info to the first table.
  
   $result=mysql_query("INSERT INTO file (description,filename,filesize,filetype) VALUES ('$form_description','$form_data_name','$form_data_size','$form_data_type')"
/*פעולת ההכנסה של פרטי הקובץ
אל בסיס הנתונים.
*/
);
  
     if (!$result) {
        die('Error inserting the file info');
     }
     $id= mysql_insert_id();
  
     //inserting the file data to the second table.
  
   $result=mysql_query("INSERT INTO filedata (id,bin_data) VALUES ('$id','$data')"
/*פעולת ההכנסה של המידע הבינארי
אל בסיס הנתונים.
*/
);
  
     if (!$result) {
        die('Error inserting the file data');
     }
  
     echo "File $form_description insert successfully<BR>";
  
     mysql_close();
  
  } else {
/*אם כפתור השליחה לא נלחץ,
מציגים טופס למשתמש.
*/


?>

   <FORM method="post" action="
<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
      File Description:<br>
      <INPUT type="text" name="form_description" size="40">
      <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
      <BR>File to upload/store in database:<BR>
      <INPUT type="file" name="form_data" size="40">
      <P><INPUT type="submit" name="submit" value="submit"></P>
   </FORM>

<?php
  }
?>
</BODY>
</HTML>


תגובות בנושא

הכל טוב ויפה אבל... 05-12-02 16:01
 אביב
#187

הכל טוב ויפה במאמר הזה אבל בתכלס, לא הסברתם מה "השורה החשובה" עושה !
ובלי זה, זה לא שווה !

השורה החשובה 05-12-02 16:01
 אלי חן (מנהל)
#188

אתה צודק, אבל לא אני כתבתי את המדריך הזה.. בכל אופן אני אסביר מה זה אומר:
כאשר מעלים קובץ באמצעות טופס אז PHP שומרת את הקובץ בספריה זמנית בשם קובץ זמני, והנתיב אל אותו קובץ זמני נמצא במשתנה form_data$. השורה החשובה בקוד פותחת את הקובץ בצורה *בינארית* הזמני לקריאה וקוראת את תוכנו. למחרוזת של התוכן אנו מוסיפים סלאשים כדי שיהיה ניתן להכניסו לבסיס נתונים של MySQL (ניתן להשתמש גם בפונקציה mysql_escape_string). ואת כל המחרוזת הזו שומרים במשתנה data$.

רוחב ואורך התמונה 08-12-03 22:01
 טל חדד
#1084

באיזו פונקציה משתמשים כדי לקבל אורך ורוחב של תמונה?
אני צריך את זה בשביל סקריפט שאני בונה
תודה מראש

getimagesize 09-12-03 18:02
 אלי חן (מנהל)
#1126

מקבל כפרמטר את הנתיב לקובץ התמונה, ומחזיר מערך של נתונים על התמונה.
אינדקס 0 - רוחב התמונה.
אינדקס 1 - אורך התמונה.
הוא מחזיר עוד כמה נתונים, כמו mimetype וסוג התמונה.

זה טיפשי לפי דעתי.. לא עדיף להשתמש ב 07-12-05 01:01
 בל עט
#2596

זה טיפשי.. לא עדיף להשתמש ב load_file ?

$result=mysql_query("INSERT INTO filedata (id,bin_data) VALUES ('$id',load_file('$form_data'))");

בזבוז משאבים להשתמש ב PHP בשביל זה :

זה לא טיפשי 01-11-07 02:00
 מני סמט
#2791

יש יתרונות ויש חסרונות.
זה מוסבר בעמוד הראשון, יש דברים שלא צריך לאחסן במסד ויש כאלה שכן מומלץ.


לדף הקודםבסיס הנתונים -הקודם
לתחילת הדףלתחילת הדף
הבא- שליפת קבצים מבסיס הנתוניםלדף הבא