【问题标题】:PHP embed multiple mp3 tracks after uploading using echo and <audio>PHP 使用 echo 和 <audio> 上传后嵌入多个 mp3 曲目
【发布时间】:2011-11-07 20:53:56
【问题描述】:

我的 html5 表单可以通过一个提交按钮上传多个 mp3 文件,但我希望它们都立即出现(嵌入)在带有标签的页面上。目前我只能得到一个。

问:如何设置其他 id(audio-player2、audioplayer3 等)的 echo 显示?

我尝试用相同的东西添加第二个回声并替换 audio-player2 但它(可以理解)播放相同的文件。大概是因为 (name="files[]")

这是html:

<form method="post" enctype="multipart/form-data">
            <input type="file" name="files[]" multiple="multiple">
            <input type="submit" value="upload!">
            </form>
here's the php:
<?php
if (isset($_FILES['files'])){
    foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name){
        move_uploaded_file($tmp_name, "uploaded/{$_FILES['files']['name'][$key]}");
    }
echo "<br><audio preload controls src='uploaded/{$_FILES['files']['name'][$key]}' id='audio-player1' name='audio-player1'></audio><br>";
}
?>

【问题讨论】:

  • 您的脚本将允许任何人在您的服务器上的任何位置随意书写他们想要的任何文件。永远不要在引用服务器文件系统的任何内容中使用用户提供的文件名(尤其是直接来自 $_FILES 条目)。
  • 谢谢。会做。现在只是实验室测试,然后锁定!

标签: php html audio embed echo


【解决方案1】:

您需要将 echo 语句移到循环中。

【讨论】:

    【解决方案2】:

    将 echo 语句移到 foreach 循环中并添加一个计数变量:

    <?php
    if (isset($_FILES['files'])){
        $i = 0;
        foreach ($_FILES['files']['tmp_name'] as $key => $tmp_name){
            move_uploaded_file($tmp_name, "uploaded/{$_FILES['files']['name'][$key]}");
            echo "<br><audio preload controls src='uploaded/{$_FILES['files']['name'][$key]}' id='audio-player{$i}' name='audio-player{$i}'></audio><br>";
            $i++;
        }
    }
    ?>
    

    【讨论】:

    • 非常感谢!任何代码或属性来同步它们? (预加载不起作用)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多