【问题标题】:Javascript: getting Audio via POSTJavascript:通过 POST 获取音频
【发布时间】:2014-05-13 15:45:09
【问题描述】:

我可能是从完全错误的角度来的(如果是这种情况,请随时告诉我)但是....

我有一个音乐应用程序,用户可以在其中上传音乐曲目,然后稍后预览。

存储音频的目录受 .htaccess 保护,以防止未经授权的访问:

deny from all

保护这个目录显然可以防止被Javascript访问的文件:

var track = new Audio('path/to/file');

我希望能够验证用户,然后通过向页面的请求传递额外信息(对于 GET 请求来说数据过多),通过另一个脚本返回轨道。

var track = new Audio('path/to/script/to/return/audio');

这可能吗?如果你能想出一个解决方案,我很想听听。

【问题讨论】:

  • 绝对有可能,您能具体说明您使用的是哪种后端技术吗?
  • PHP。问题不在 PHP 端,它只是在请求文件时实际发送的 post 数据
  • 如果是 PHP,@Fabien 解决方案有什么问题?
  • 我的身份验证数据太大,无法使用 GET 发送

标签: javascript .htaccess


【解决方案1】:

你为什么不通过一个 php 脚本来提供你的音频文件呢

  1. 检查用户凭据并
  2. 使用正确的 Mime 类型流式传输数据?

类似的东西(灵感来自php output file on disk to browser SO question)

get-audio.php 文件中

<?php 
// check user credentials
if($_GET['auth_token'] != '12345') exit;

// read the audio file
$name = $_GET['path'];
if (file_exists($name)) {

    // send the right headers
    header("Content-Type: audio/mp3");
    header("Content-Length: " . filesize($name));

    // dump the file and stop the script
    readfile($name)
    exit
}

然后,在 javascript 中:

var track = new Audio('get-audio.php?auth_token=12345&path=path/to/file');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2021-12-07
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多