glenelkins Posted July 11, 2007 Share Posted July 11, 2007 Hi Im writing a program to enable a user to select a part of an MP3 song and save it. Now I wrote a quick test before I started on the final app, and that worked fine. Here is the test page code <? ob_start(); // Open the mp3 $open_file = fopen( "1.mp3", "r"); // Take first 20 seconds assuming bitrate of 1 /* Time worked out as: * ( 128kbits * 1024 / 8 ) * 20 = 320000; */ $content = fread( $open_file, 320000 ); fclose( $open_file ); echo ( "<b>WE ARE LOOKING AT 20seconds OF 1.mp3</b>" ); echo ( "<br><br><br>" ); echo ( $content ); $open_file = fopen ( "2.mp3", "w" ); fwrite ( $open_file, $content ); fclose ( $open_file ); //header ( "Location: 2.mp3" ); ?> This works perfect, it writes the 2.mp3 file fine with the correct number of seconds. here is the code from the main app. this one when i comes to reading the file seems to go and download the index.php file its running from rather than just opening the mp3 file...any ideas on this? <?php ob_start(); // Mp3 Splitting if ( $_GET['aCt'] != "upload" ) { // Show the user the upload form $CONTENT = <<<TPL <form action="index.php?aCt=upload" method="post" enctype="multipart/form-data"> <table border="0" align="center" cellpadding="0" cellspacing="2"> <tr> <td><b>MP3 File: </b></td> <td><input type="file" name="mp3file" size="15"></td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="Upload MP3 File"></td> </tr> </table> </form> TPL; } else { // Check the file is uploaded // debug //echo "File Temporary Name: " . $_FILES['mp3file']['tmp_name'] . "<br>"; //echo "File Name: " . $_FILES['mp3file']['name'] . "<br>"; //echo "Moving File To: ./tmp/" . $_FILES['mp3file']['name'] . "<br>"; if ( is_uploaded_file ( $_FILES['mp3file']['tmp_name'] ) ) { //debug //echo "File Upload Success<br>"; if ( move_uploaded_file ( $_FILES['mp3file']['tmp_name'], "./tmp/" . $_FILES['mp3file']['name'] ) ) { //debug //echo "File Moved Success<br>"; $tmp_file = "./tmp/" . $_FILES['mp3file']['name']; // Get the file info include_once ( "./getid3/getid3/getid3.php" ); $getID3 = new getID3; $fileinfo = $getID3->analyze( $tmp_file ); // debug //echo "<br><br>"; //echo "File Type: " . $fileinfo['fileformat'] . "<br>"; //echo "Song Length: mm:ss " . $fileinfo['playtime_string'] . "<br>"; //echo "Overall bitrate: (kbps) " . $fileinfo['bitrate'] . "<br>"; // No convert the minutes to seconds $tmp_length = explode ( ":", $fileinfo['playtime_string'] ); $tmp_mins = $tmp_length[0]; // Minutes $tmp_secs = $tmp_length[1]; // Seconds if ( intval ( $tmp_mins ) > 0 ) { $MinsSecs = $tmp_mins * 60; } else { $MinsSecs = 0; } $TotalSeconds = $tmp_secs + $MinsSecs; //debug //echo "<br><br>Total Song Length In Seconds: $TotalSeconds<br>"; $CONTENT = "<p style='color: red; font-weight: bold;'>File Information</p>"; $CONTENT .= "<p> <b>File Name: </b>" . $_FILES['mp3file']['name'] . "<br> <b>Song Length In Seconds: </b>$TotalSeconds </p>"; $CONTENT .= "<p style='color: red; font-weight: bold;'>Sample Selection</p>"; // Generate a list of seconds for ( $i = 0; $i <= $TotalSeconds; $i++ ) { $START_POINT .= "<option value='$i'>$i</option>"; } $CONTENT .= "<form action='index.php?aCt=select' method='post'> <b>Starting Point ( in seconds ): </b><select name='start'>$START_POINT</select><br> <b>Length ( in seconds ): </b><select name='length'>$START_POINT</select><br> <input type='submit' value='Cut Selection From Song'> <input type='hidden' name='filename' value='$tmp_file'> <input type='hidden' name='bitrate' value='$fileinfo[bitrate]'> </form>"; } else { //debug echo "File Move Error<br>"; $CONTENT = "<span style='color: red;'>File Move Error</span><br>"; } } else { //debug echo "File Upload Error<br>"; $CONTENT = "<span style='color: red'>There Has Been An Error Uploading Your File</span><br>"; } } if ( $_GET['aCt'] == "select" ) { // Open the mp3 file for reading $filename = $_POST['filename']; $start = $_POST['start']; $length = $_POST['length']; $bitrate = $_POST['bitrate']; echo "Reading File: $filename<br>"; echo "Start: $start<br>"; echo "Length: $length<br>"; echo "Bitrate: $bitrate<br>"; // First work out how much to read from the bitrate // and length $Bits = ( $bitrate * 1024 ) / 8; $Bits = $Bits * intval ( $length ); // debug echo "Bits: $Bits<br>"; // Open the file $open_file = fopen ( "$filename", "r" ); // Read file $file_content = fread ( $open_file, $Bits ); // close file fclose ( $open_file ); //debug echo "<br>Content Of The File<br><br>"; echo $file_content; } echo ( $CONTENT ); ?> Link to comment https://forums.phpfreaks.com/topic/59407-solved-file-read-issue/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.