Php div中的标题(“内容类型:音频/mpeg”)
我有一个文件speakWord.php: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
<?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=
属性的base64data:
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身份验证令牌),那么将二进制数据打包成一个base64data:
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>");