2014-01-27 174 views
0

我正在爲mp3和mp4製作一個下載器,我想在php中使用兩個按鈕調用這兩個php文件,但只有第一個php文件有效。使用PHP下載MP3和MP4文件

爲popup.php代碼

<?php 
    include "downloadmp3.php"; 
    include "downloadmp4.php"; 
?> 
<html> 
<head></head> 
<body bgcolor="#E6E6E6"> 
    <form method="post"> 
     <label for="url">Download mp3:</label> 
     <input type="text" name="url" value="" id="url"> 
     <input type="submit" name="submit" value="Download"> 
     <hr> 
    </form> 
    <form method="post"> 
     <label for="url1">Download mp4:</label> 
     <input type="text" name="url1" value="" id="url1"> 
     <input type="submit" name="submit" value="Download"> 
    </form> 
</body> 
</html> 

代碼downloadmp3.php

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $url = (isset($_POST['url']) && !empty($_POST['url'])) ? $_POST['url'] : false; 
    if (!$url) { 
     echo "Vul alstublieft een url in"; 
    } else { 
     $source = file_get_contents($url); 
     $source = urldecode($source); 

     // Verkrijg de video titel. 
     $vTitle_results_1 = explode('<title>', $source); 
     $vTitle_results_2 = explode('</title>', $vTitle_results_1[1]); 

     $title = trim(str_replace(' – YouTube', 」, trim($vTitle_results_2[0]))); 

     // Extract video download URL. 
     $dURL_results_1 = explode('url_encoded_fmt_stream_map', "url=", $source); 
     $dURL_results_2 = explode('\u0026quality', $dURL_results_1[1]); 

     // Force download van d video. 
     $file = str_replace(' ', '_', strtolower($title)).'.mp4'; 

     header("Cache-Control: public"); 
     header("Content-Description: File Transfer"); 
     header("Content-Disposition: attachment; filename=$file"); 
     header("Content-Type: video/mp4"); 
     header("Content-Transfer-Encoding: binary"); 

     readfile($dURL_results_2[0]); 

     exit; 
    } 
} 
?> 

和代碼downloadmp4.php

<?php 
if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 
    $url = (isset($_POST['url1']) && !empty($_POST['url1'])) ? $_POST['url1'] : false; 
    if (!$url) { 
     echo "Vul alstublieft een url in"; 
    } else { 
     $source = file_get_contents($url); 
     $source = urldecode($source); 

     // Verkrijg de video titel. 
     $vTitle_results_1 = explode('<title>', $source); 
     $vTitle_results_2 = explode('</title>', $vTitle_results_1[1]); 

     $title = trim(str_replace(' – YouTube', 」, trim($vTitle_results_2[0]))); 

     // Extract video download URL. 
     $dURL_results_1 = explode('url_encoded_fmt_stream_map', "url1=", $source); 
     $dURL_results_2 = explode('\u0026quality', $dURL_results_1[1]); 

     // Force download van d video. 
     $file = str_replace(' ', '_', strtolower($title)).'.mp4'; 

     header("Cache-Control: public"); 
     header("Content-Description: File Transfer"); 
     header("Content-Disposition: attachment; filename=$file"); 
     header("Content-Type: video/mp4"); 
     header("Content-Transfer-Encoding: binary"); 

     readfile($dURL_results_2[0]); 

     exit; 
    } 
} 
?> 

更新時間: 表單提交MP3形式工程。 但提交給MP4的表單不起作用。 請提供解決方案,使其工作。

回答

0

只有第一個PHP文件調用工作,因爲如果條件如下:

if ($_SERVER['REQUEST_METHOD'] == 'POST'){ 

由於downloadmp3.php已被列入第一,因此它的if condition是給結果。 使用適當的表單處理程序使其工作。 最好的做法是爲表單使用唯一的名稱。

0

此代碼是在所有的瀏覽器工作正常,我和下載的文件播放好: 下載audio.php

 
    <?php 
    $file = $_GET['file']; 
    header ('Content-type: octet/stream'); 
    header ('Content-disposition: attachment; filename='.$file.';'); 
    header('Content-Length: '.filesize($file)); 
    readfile($file); 
    exit; 
    ?> 
的test.html
 
    <a href='download-audio.php?file=duetsong.mp3'>Download Duet song MP3</a> 
    <a href='download-audio.php?file=duetsong.mp4'>Download Duet song MP4</a>