Uploading mutiple binary files to single row in Mysql with Php

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • underground
    New Member
    • Sep 2006
    • 41

    Uploading mutiple binary files to single row in Mysql with Php

    I need a little help figuring this one out. I have a script that I've modified to post mutiple binary files into a single row but instead of copying the indiviuals files it rewrites the first file to all the other columns in the row... Could someone help me with this . Below is the complete script...and form..

    [PHP]
    <?php
    if(isset($_POST['upload']) && $_FILES['userfile']['size'] && $_FILES['audiofile1']['size'] && $_FILES['audiofile2']['size'] && $_FILES['audiofile3']['size'] && $_FILES['audiofile4']['size'] && $_FILES['audiofile5']['size'] && $_FILES['audiofile6']['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($tmpNa me));
    $content = addslashes($con tent);
    fclose($fp);
    $fileName1 = $_FILES['audiofile1']['name'];
    $tmpName1 = $_FILES['audiofile1']['tmp_name'];
    $fileSize1 = $_FILES['audiofile1']['size'];
    $fileType1 = $_FILES['audiofile1']['type'];

    $fp = fopen($tmpName, 'r');
    $audiofile1 = fread($fp, filesize($tmpNa me));
    $audiofile1 = addslashes($aud iofile1);
    fclose($fp);
    $fileName2 = $_FILES['audiofile2']['name'];
    $tmpName2 = $_FILES['audiofile2']['tmp_name'];
    $fileSize2 = $_FILES['audiofile2']['size'];
    $fileType2 = $_FILES['audiofile2']['type'];

    $fp = fopen($tmpName, 'r');
    $audiofile2 = fread($fp, filesize($tmpNa me));
    $audiofile2 = addslashes($aud iofile2);
    fclose($fp);
    $fileName3 = $_FILES['audiofile3']['name'];
    $tmpName3 = $_FILES['audiofile3']['tmp_name'];
    $fileSize3 = $_FILES['audiofile3']['size'];
    $fileType3 = $_FILES['audiofile3']['type'];

    $fp = fopen($tmpName, 'r');
    $audiofile3 = fread($fp, filesize($tmpNa me));
    $audiofile3 = addslashes($aud iofile3);
    fclose($fp);
    $fileName4 = $_FILES['audiofile4']['name'];
    $tmpName4 = $_FILES['audiofile4']['tmp_name'];
    $fileSize4 = $_FILES['audiofile4']['size'];
    $fileType4 = $_FILES['audiofile4']['type'];

    $fp = fopen($tmpName, 'r');
    $audiofile4 = fread($fp, filesize($tmpNa me));
    $audiofile4 = addslashes($aud iofile4);
    fclose($fp);
    $fileName5 = $_FILES['audiofile5']['name'];
    $tmpName5 = $_FILES['audiofile5']['tmp_name'];
    $fileSize5 = $_FILES['audiofile5']['size'];
    $fileType5 = $_FILES['audiofile5']['type'];

    $fp = fopen($tmpName, 'r');
    $audiofile5 = fread($fp, filesize($tmpNa me));
    $audiofile5 = addslashes($aud iofile5);
    fclose($fp);
    $fileName6 = $_FILES['audiofile6']['name'];
    $tmpName6 = $_FILES['audiofile6']['tmp_name'];
    $fileSize6 = $_FILES['audiofile6']['size'];
    $fileType6 = $_FILES['audiofile6']['type'];

    $fp = fopen($tmpName, 'r');
    $audiofile6 = fread($fp, filesize($tmpNa me));
    $audiofile6 = addslashes($aud iofile6);
    fclose($fp);
    if(!get_magic_q uotes_gpc())
    {
    $fileName = addslashes($fil eName);
    $fileName1 = addslashes($fil eName1);
    $fileName2 = addslashes($fil eName2);
    $fileName3 = addslashes($fil eName3);
    $fileName4 = addslashes($fil eName4);
    $fileName5 = addslashes($fil eName5);
    $fileName6 = addslashes($fil eName6);
    }
    include 'config.php';
    include 'opendb.php';

    $query = "INSERT INTO audio (name, size, type, content, name1, size1, type1, audiofile1, name2, size2, type2, audiofile2, name3, size3, type3, audiofile3, name4, size4, type4, audiofile4, name5, size5, type5, audiofile5, name6, size6, type6, audiofile6 ) ".
    "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$fileName1', '$fileSize1', '$fileType1', '$audiofile1', '$fileName2', '$fileSize2', '$fileType2', '$audiofile2', '$fileName3', '$fileSize3', '$fileType3', '$audiofile3', '$fileName4', '$fileSize4', '$fileType4', '$audiofile4', '$fileName5', '$fileSize5', '$fileType5', '$audiofile5', '$fileName6', '$fileSize6', '$fileType6', '$audiofile6')" ;

    mysql_query($qu ery) or die('Error, query failed');
    include 'closedb.php';

    echo "<br>File $fileName uploaded<br> File $fileName1 uploaded<br>Fil e $fileName2 uploaded<br>Fil e $fileName3 uploaded<br>Fil e $fileName4 uploaded<br>Fil e $fileName5 uploaded<br>Fil e $fileName6 uploaded<br>";
    }
    ?>
    [/PHP]
    and heres the HTML Form
    [HTML]
    <form method="post" enctype="multip art/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="88880000 00">
    <input name="userfile" type="file" id="userfile">
    </td>
    </tr>
    <tr>
    <td width="246">
    <input type="hidden" name="MAX_FILE_ SIZE" value="88800000 0">
    <input name="audiofile 1" type="file" id="audiofile1" >
    </td>
    </tr>
    <tr>
    <td width="246">
    <input type="hidden" name="MAX_FILE_ SIZE" value="88800000 0">
    <input name="audiofile 2" type="file" id="audiofile2" >
    </td>
    </tr>
    <tr>
    <td width="246">
    <input type="hidden" name="MAX_FILE_ SIZE" value="88880000 00">
    <input name="audiofile 3" type="file" id="audiofile3" >
    </td>
    </tr>
    <td width="246">
    <input type="hidden" name="MAX_FILE_ SIZE" value="88880000 00">
    <input name="audiofile 4" type="file" id="audiofile4" >
    </td>
    </tr>
    <td width="246">
    <input type="hidden" name="MAX_FILE_ SIZE" value="88800000 0">
    <input name="audiofile 5" type="file" id="audiofile5" >
    </td>
    </tr>
    <td width="246">
    <input type="hidden" name="MAX_FILE_ SIZE" value="88880000 00">
    <input name="audiofile 6" type="file" id="audiofile6" >
    </td>
    </tr>
    <tr>
    <td width="80"><inp ut name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
    </tr>
    </table>
    </form>
    [/HTML]

    I've been playing with this for about a week and for some reason I can't get it to work..Any help would be greatly appreciated!
  • ronverdonk
    Recognized Expert Specialist
    • Jul 2006
    • 4259

    #2
    Why are you using the same statement for every to be uploaded file?
    Code:
    $fp = fopen($tmpName, 'r');
    Ronald :cool:

    Comment

    • underground
      New Member
      • Sep 2006
      • 41

      #3
      I assumed the statement was required for each of the files that are being uploaded to the db.

      Comment

      • underground
        New Member
        • Sep 2006
        • 41

        #4
        Ronald," after reading your post I made a modification to the script and manage to figure out how to get mutiple files uploaded using this shorten version of the orginal post
        However another issue arose!
        [PHP]
        <?php
        if(isset($_POST['upload']) && $_FILES['userfile']['size']&& $_FILES['audiofile1']['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($tmpNa me));
        $content = addslashes($con tent);

        $fileName1 = $_FILES['audiofile1']['name1'];
        $tmpName1 = $_FILES['audiofile1']['tmp_name'];
        $fileSize1 = $_FILES['audiofile1']['size1'];
        $fileType1 = $_FILES['audiofile1']['type1'];

        $fp = fopen($tmpName1 , 'r');
        $audiofile1 = fread($fp, filesize($tmpNa me));
        $audiofile1 = addslashes($aud iofile1);
        fclose($fp);
        if(!get_magic_q uotes_gpc())
        {
        $fileName = addslashes($fil eName);
        $fileName1 = addslashes($fil eName1);
        }
        include 'config.php';
        include 'opendb.php';

        $query = "INSERT INTO audio (name, size, type, content, name1, size1, type1, audiofile1 ) ".
        "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$fileName1', '$fileSize1', '$fileType1', '$audiofile1')" ;

        mysql_query($qu ery) or die('Error, query failed');
        include 'closedb.php';

        echo "<br>File $fileName uploaded<br>Fil e $fileName1 uploaded<br>";
        }
        ?>
        [/PHP]

        And the html form looks like this
        [HTML]
        <form method="post" enctype="multip art/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="8000000" >
        <input name="userfile" type="file" id="userfile">
        </td>
        <td width="246">
        <input type="hidden" name="MAX_FILE_ SIZE" value="8000000" >
        <input name="audiofile 1" type="file" id="audiofile1" >
        </td>
        <td width="80"><inp ut name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
        </tr>
        </table>
        </form>
        [/HTML]

        the only problem is that none of the atribute information is being store in the database for the audio file1. The file name1, size1, type1 are blank just the binary data is being stored.

        Thanks again for your help..

        Comment

        • underground
          New Member
          • Sep 2006
          • 41

          #5
          And as far as RTFM being almost extinct. I think most just don't have time with fast pace of life and all but here something for your amusement! Here my first website no training, no mentor's, nothing but a desire to learn..I know this doesn't come close what others can do but I'll get there one day..
          [HTML]
          http://www.atlantasund ergroundhits.co m/
          [/HTML]

          best veiwed in internet explorer..

          Thanks again for you help..
          RTFM "lol"

          Comment

          • ronverdonk
            Recognized Expert Specialist
            • Jul 2006
            • 4259

            #6
            Great site!
            However, you still have an erroneous statements [php]$audiofile1 = fread($fp, filesize($tmpNa me));
            $tmpName1 = $_FILES['audiofile1']['tmp_name'];[/php]

            Ronald :cool:

            Comment

            • underground
              New Member
              • Sep 2006
              • 41

              #7
              I'll check into this today when I get home.

              Thanks Ronald.

              Comment

              • underground
                New Member
                • Sep 2006
                • 41

                #8
                It took me about 4 hours but I figured it out here's the PHP I took into account your recommendations ..

                [PHP]
                <?php
                if(isset($_POST['upload']) && $_FILES['userfile']['size'] && $_FILES['audiofile1']['size'] && $_FILES['audiofile2']['size'] && $_FILES['audiofile3']['size'] && $_FILES['audiofile4']['size'] && $_FILES['audiofile5']['size'] && $_FILES['audiofile6']['size'] > 0)
                {
                $fileName = $_FILES['userfile']['name'];
                $tmpName = $_FILES['userfile']['tmp_name'];
                $fileSize = $_FILES['userfile']['size'];
                $fileType = $_FILES['userfile']['type'];

                $fileName1 = $_FILES['audiofile1']['name'];
                $tmpName1 = $_FILES['audiofile1']['tmp_name'];
                $fileSize1 = $_FILES['audiofile1']['size'];
                $fileType1 = $_FILES['audiofile1']['type'];

                $fileName2 = $_FILES['audiofile2']['name'];
                $tmpName2 = $_FILES['audiofile2']['tmp_name'];
                $fileSize2 = $_FILES['audiofile2']['size'];
                $fileType2 = $_FILES['audiofile2']['type'];

                $fileName3 = $_FILES['audiofile3']['name'];
                $tmpName3 = $_FILES['audiofile3']['tmp_name'];
                $fileSize3 = $_FILES['audiofile3']['size'];
                $fileType3 = $_FILES['audiofile3']['type'];

                $fileName4 = $_FILES['audiofile4']['name'];
                $tmpName4 = $_FILES['audiofile4']['tmp_name'];
                $fileSize4 = $_FILES['audiofile4']['size'];
                $fileType4 = $_FILES['audiofile4']['type'];

                $fileName5 = $_FILES['audiofile5']['name'];
                $tmpName5 = $_FILES['audiofile5']['tmp_name'];
                $fileSize5 = $_FILES['audiofile5']['size'];
                $fileType5 = $_FILES['audiofile5']['type'];

                $fileName6 = $_FILES['audiofile6']['name'];
                $tmpName6 = $_FILES['audiofile6']['tmp_name'];
                $fileSize6 = $_FILES['audiofile6']['size'];
                $fileType6 = $_FILES['audiofile6']['type'];

                $fp = fopen($tmpName, 'r');
                $content = fread($fp, filesize($tmpNa me));
                $content = addslashes($con tent);
                $fp = fopen($tmpName1 , 'r');
                $audiofile1 = fread($fp, filesize($tmpNa me1));
                $audiofile1 = addslashes($aud iofile1);
                $fp = fopen($tmpName2 , 'r');
                $audiofile2 = fread($fp, filesize($tmpNa me2));
                $audiofile2 = addslashes($aud iofile2);
                $fp = fopen($tmpName3 , 'r');
                $audiofile3 = fread($fp, filesize($tmpNa me3));
                $audiofile3 = addslashes($aud iofile3);
                $fp = fopen($tmpName4 , 'r');
                $audiofile4 = fread($fp, filesize($tmpNa me4));
                $audiofile4 = addslashes($aud iofile4);
                $fp = fopen($tmpName5 , 'r');
                $audiofile5 = fread($fp, filesize($tmpNa me5));
                $audiofile5 = addslashes($aud iofile5);
                $fp = fopen($tmpName6 , 'r');
                $audiofile6 = fread($fp, filesize($tmpNa me6));
                $audiofile6 = addslashes($aud iofile6);

                fclose($fp);
                if(!get_magic_q uotes_gpc())
                {
                $fileName = addslashes($fil eName);
                $fileName1 = addslashes($fil eName1);
                $fileName2 = addslashes($fil eName2);
                $fileName3 = addslashes($fil eName3);
                $fileName4 = addslashes($fil eName4);
                $fileName5 = addslashes($fil eName5);
                $fileName6 = addslashes($fil eName6);

                }
                include 'config.php';
                include 'opendb.php';

                $query = "INSERT INTO audio (name, size, type, content, name1, size1, type1, audiofile1, name2, size2, type2, audiofile2, name3, size3, type3, audiofile3, name4, size4, type4, audiofile4, name5, size5, type5, audiofile5, name6, size6, type6, audiofile6 ) ".
                "VALUES ('$fileName', '$fileSize', '$fileType', '$content', '$fileName1', '$fileSize1', '$fileType1', '$audiofile1', '$fileName2', '$fileSize2', '$fileType2', '$audiofile2', '$fileName3', '$fileSize3', '$fileType3', '$audiofile3', '$fileName4', '$fileSize4', '$fileType4', '$audiofile4', '$fileName5', '$fileSize5', '$fileType5', '$audiofile5', '$fileName6', '$fileSize6', '$fileType6', '$audiofile6')" ;

                mysql_query($qu ery) or die('Error, query failed');
                include 'closedb.php';

                echo "<br>File $fileName uploaded<br> File $fileName1 uploaded<br>Fil e $fileName2 uploaded<br>Fil e $fileName3 uploaded<br>Fil e $fileName4 uploaded<br>Fil e $fileName5 uploaded<br>Fil e $fileName6 uploaded<br>Fil e $fileName7 uploaded<br>";
                }
                ?>
                [/PHP]

                the form

                [HTML]
                <form method="post" enctype="multip art/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="88880000 00">
                <input name="userfile" type="file" id="userfile">
                </td>
                </tr>
                <tr>
                <td width="246">
                <input type="hidden" name="MAX_FILE_ SIZE" value="88800000 0">
                <input name="audiofile 1" type="file" id="audiofile1" >
                </td>
                </tr>
                <tr>
                <td width="246">
                <input type="hidden" name="MAX_FILE_ SIZE" value="88800000 0">
                <input name="audiofile 2" type="file" id="audiofile2" >
                </td>
                </tr>
                <tr>
                <td width="246">
                <input type="hidden" name="MAX_FILE_ SIZE" value="88880000 00">
                <input name="audiofile 3" type="file" id="audiofile3" >
                </td>
                </tr>
                <td width="246">
                <input type="hidden" name="MAX_FILE_ SIZE" value="88880000 00">
                <input name="audiofile 4" type="file" id="audiofile4" >
                </td>
                </tr>
                <td width="246">
                <input type="hidden" name="MAX_FILE_ SIZE" value="88800000 0">
                <input name="audiofile 5" type="file" id="audiofile5" >
                </td>
                </tr>
                <td width="246">
                <input type="hidden" name="MAX_FILE_ SIZE" value="88880000 00">
                <input name="audiofile 6" type="file" id="audiofile6" >
                </td>
                </tr>
                <tr>
                <td width="80"><inp ut name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
                </tr>
                </table>
                </form>
                [/HTML]

                The script uploads mutiple file with all the atribute information...
                But I came across another issue when attempting upload a audio file and large images the blob feilds only allow 64 kilobytes to written to db. I think I
                read acorss some documentation that said mysql by default only allows for 1 mega byte to be uploaded.. any idea's

                Thanks for your help Ronald
                great examples

                Comment

                • ronverdonk
                  Recognized Expert Specialist
                  • Jul 2006
                  • 4259

                  #9
                  The following are the maximum sizes for each BLOB field:

                  - TINYBLOB = 255 bytes
                  - BLOB = 65535 bytes
                  - MEDIUMBLOB = 16777215 bytes
                  - LONGBLOB = 4294967295 bytes

                  Robald :cool:

                  Comment

                  • bishwadeep
                    New Member
                    • Nov 2006
                    • 12

                    #10
                    I think you have copied the code for each files
                    for eg: $tmpName is used for first file and for other files you have used the same
                    $tmpName
                    I mean There should be $tmpName1 in place of bold parts and similartly to to tmpName2,3,4,5, 6:

                    $fileName1 = $_FILES['audiofile1']['name'];
                    $tmpName1 = $_FILES['audiofile1']['tmp_name'];
                    $fileSize1 = $_FILES['audiofile1']['size'];
                    $fileType1 = $_FILES['audiofile1']['type'];

                    $fp = fopen($tmpName, 'r');
                    $audiofile1 = fread($fp, filesize($tmpName));
                    $audiofile1 = addslashes($aud iofile1);
                    fclose($fp);

                    Hope it is the right error

                    Comment

                    • underground
                      New Member
                      • Sep 2006
                      • 41

                      #11
                      Ronald that did the trick I was able to successfully upload audio files....

                      Now on to the next task....

                      Thanks again

                      Comment

                      Working...