首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从mysql在PHP页面中显示音频格式?

如何从mysql在PHP页面中显示音频格式?
EN

Stack Overflow用户
提问于 2019-05-13 00:23:47
回答 1查看 467关注 0票数 -1

已经提出了类似类型的问题,但没有一个是有帮助的。我想要显示的工作音频文件(.mp3或.wav)在php页面从mysql数据库。我尽了最大努力,但音频文件不能播放。,#code1

代码语言:javascript
复制
<html>
<form method="post" action="searchbook.php">
<div class="search">
<input type="text" name="searchword" class="searchTerm">
<button type="submit" class="searchButton">SEARCH</button>
</div>
</form>
</html>

从上面的文件中,我将用户输入的值传递给下面的searchbook.php文件#code2

代码语言:javascript
复制
<html>
$searchword=$_POST['searchword'];
$con=mysqli_connect('localhost','root','','bookspyramid');
$sql="SELECT audiono FROM bookinfo where bookname like '%$searchword%'";
if($result=mysqli_query($con,$sql))
{
  if(mysqli_num_rows($result)>0)
  {
    while($row=mysqli_fetch_array($result))
    {  
      echo "<a href='..\datafile/viewaudio.php?del=$row[audiono]'>Download AudioBook </a>";
    }
  }
}
</html>

从上面的代码中,我将audiono的值传递给了下面的viewaudio php文件,#code3

代码语言:javascript
复制
<html>
<?php
$remitem=$_GET['del'];
$con=mysqli_connect('localhost','root','','bookspyramid');
?>
<audio controls style="width: 90%; margin-left: 5%;">
<source src="data:audio/wav;base64,<?php echo base64_encode($remitem); ?>" type="audio/wav">
</audio>
</html>

如果不是上面的代码,而是下面的代码,那么文件会成功下载,#code4

代码语言:javascript
复制
<?php
    $remitem=$_GET['del'];
    header('Content-type: application/audio');
    header('Content-Disposition: inline; filename="' . $remitem . '"');
    header('Content-Transfer-Encoding: binary');
    header('Accept-Ranges: bytes');
    @readfile($remitem);
?>

但如果我想显示音频格式(在线播放)。在Edge中,它显示‘此类型的音频文件不受支持’

在#code3的输出中,audiofile正在显示,但它不工作(灰色)。我希望它能起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-13 00:28:24

我已经检查了echo $remitem;打印与我要播放的扩展名完全相同的audiofile。

那你为什么要用base-64编码呢?src需要一个URL (或base64编码的二进制数据,但您没有二进制数据,您有一个文件名),所以只需使用文件名:

代码语言:javascript
复制
<source src="<?php echo htmlspecialchars($remitem); ?>" type="audio/wav">

注意 htmlspecialchars()的用法在这里。这是因为您直接将用户输入输出到页面。这是一个潜在的安全漏洞,您需要确保用户没有精心制作到您的页面的链接,这会导致您的代码危及您站点上的其他用户。更多关于这个主题的信息可以在here上找到。

一旦您以URL形式链接到文件名,下一个问题就变成...这是正确的URL吗?好吧,这由你决定。你有一个文件名,但是实际的文件在哪里呢?文件系统上的该位置需要转换为web服务器上的URL。这取决于您确定该文件的URL是什么。完成后,您可以进行所需的任何修改(例如在URL中为文件名添加文件夹前缀,创建相对或绝对URL,等等)若要将文件名转换为有效的URL以检索文件,请执行以下操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56101179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档