故事简介:
我有一个 Servlet,它接收一个我无法读取的请求 (getContentType() = audio/x-wav)。我需要读取这一波并将其保存在服务器端。
详细故事:
我对 Flex、javascript、PHP 和 Python 一无所知,我想录制(从客户端“浏览器”)一个波形文件并将其发送到服务器以保存它(用于进一步的 ASR 处理)。
经过一番搜索,我发现了一个名为 Wami-Recorder (使用 flex 和 java scrip)的库,我已经使用过它,但它没有给我任何 java 服务器端示例,它也缺少文档,所以我决定亲自动手让它发挥作用。
它包含一个服务器端 python 和 PHP 示例(我将列出 PHP 示例):
<?php
# Save the audio to a URL-accessible directory for playback.
parse_str($_SERVER['QUERY_STRING'], $params);
$name = isset($params['name']) ? $params['name'] : 'output.wav';
$content = file_get_contents('php://input');
$fh = fopen($name, 'w') or die("can't open file");
fwrite($fh, $content);
fclose($fh);
?>
最后要注意的是,我确信如果我创建了一个套接字服务器并将请求定向到它,我将能够轻松获取媒体,但我希望一切都由 Servlet 处理。
基本上,Java servlet 相当于 PHP 中的以下行,这是代码中的关键行,
$content = file_get_contents('php://input');
is
InputStream input = request.getInputStream();
这基本上返回唯一的 HTTP 请求正文。您可以将其写入任意OutputStream
通常的 Java 方式。例如,一个new FileOutputStream("/some.wav")
.
您应该只意识到 HTTP 请求正文只能读取一次,而且当您调用任何一个时,它都会被隐式解析。request.getParameterXxx()
方法。因此,如果您也对请求 URI 查询字符串中的参数感兴趣,那么您应该使用
String queryString = request.getQueryString();
并自己进一步解析它(即拆分&
,然后分裂=
, then URLDecode
名称和值)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)