2014-01-27 175 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>