Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php div中的标题(“内容类型:音频/mpeg”)_Php_Jquery_Html_Mp3_File Get Contents - Fatal编程技术网

Php div中的标题(“内容类型:音频/mpeg”)

Php div中的标题(“内容类型:音频/mpeg”),php,jquery,html,mp3,file-get-contents,Php,Jquery,Html,Mp3,File Get Contents,我有一个文件speakWord.php: <?php header("Content-Type: audio/mpeg"); $voice = file_get_contents('http://translate.google.com/translate_tts?tl=' . urlencode($_POST['language']) . '&q=' . urlencode($_POST['word']) . ''); ?> <audio controls="con

我有一个文件speakWord.php:

<?php
header("Content-Type: audio/mpeg");
$voice = file_get_contents('http://translate.google.com/translate_tts?tl=' . urlencode($_POST['language']) . '&q=' . urlencode($_POST['word']) . '');
?>

<audio controls="controls" autoplay>
    <source src="<?php echo $voice; ?>"  />
</audio>
当我检查div的源代码时,它会变得很奇怪,比如:

<source src="��@��#a�F(��y2i���Ǵ1�L A�@���'!D����΂��8" �="">


当加载到div中时,我认为speakWord.php中的标题信息丢失了,我认为我缺少了一部分。

src=
是指向URL,而不是用二进制数据填充

您必须

  • 发送带有适当标头的二进制数据
  • 或者发送一个HTML片段,引用(但不包含)二进制数据

不能同时使用两者。

src=
表示指向URL,而不是用二进制数据填充

您必须

  • 发送带有适当标头的二进制数据
  • 或者发送一个HTML片段,引用(但不包含)二进制数据

不能同时使用这两种方法。

如果您真的需要将其代理到脚本上(如果有任何Google API auth令牌),则将二进制数据打包到
src=
属性的base64
data:
URL中

<?php
   // Content-Type for whole PHP output remains text/html 
   $voice = file_get_contents('http://translate.google.com/translate_tts?tl=' . urlencode($_POST['language']) . '&q=' . urlencode($_POST['word']) . '');
?>
<audio controls="controls" autoplay>
    <source src="data:audio/mpeg;base64,<?php echo base64_encode($voice); ?>"  />
</audio>


如果您真的需要在脚本上代理它(如果有任何Google API身份验证令牌),那么将二进制数据打包成一个base64
data:
URL,用于
src=
属性

<?php
   // Content-Type for whole PHP output remains text/html 
   $voice = file_get_contents('http://translate.google.com/translate_tts?tl=' . urlencode($_POST['language']) . '&q=' . urlencode($_POST['word']) . '');
?>
<audio controls="controls" autoplay>
    <source src="data:audio/mpeg;base64,<?php echo base64_encode($voice); ?>"  />
</audio>


您已经检索到二进制文件并将其输出到页面。所以你的页面上有二进制文件。你缺少HTTP和HTML的工作方式。。。您不能将原始二进制数据嵌入到
src
属性中,并期望浏览器能够理解它。src属性应该是可以从中获取二进制数据的URL。您已检索到二进制并将其输出到页面。所以你的页面上有二进制文件。你缺少HTTP和HTML的工作方式。。。您不能将原始二进制数据嵌入到
src
属性中,并期望浏览器能够理解它。src属性应该是一个可以从中提取二进制数据的URL。我想您需要将其添加到“发送二进制数据,使用适当的头并使用另一个http请求请求该数据”中。我想您需要将其添加到“发送二进制数据,使用适当的头并使用另一个http请求请求该数据”
<?php
  header("Content-Type: audio/mpeg");
  readfile('http://translate.google.com/translate_tts?tl=' . urlencode($_POST['language']) . '&q=' . urlencode($_POST['word']) . '');
?>
$("#speakWord")
.html("<audio... src='speakWord.php?language=nl&word=test'></audio>");