javascript:发送带有音频文件的 POST,然后重定向到新页面

标签 javascript jquery ajax post audio

这是我所拥有的。

./upload > 通过POST请求上传现有的本地音频文件到./post_receiver

./post_receiver > 接收POST请求并响应HTML页面

./record > 录制音频文件,通过 AJAX POST 请求下载到本地或上传到 ./post_receiver

它们工作正常,但我不想使用 AJAX。我更喜欢新的 HTML 页面。我知道如何通过 document.createElement("form")、document.body.appendChild() 和 Submit() 使用传统表单。但是,它似乎无法像 FormData 那样保存音频文件。顺便说一句,我的服务器是Amazon EC2上的node.js,但我认为它不相关。

来自 ./record 的非 AJAX POST

<form method="POST" action="/audio" enctype="multipart/form-data">
<input type="file" name="audio" value="blob:address" filename="audio.wav">
</form>

    Cannot read property 'filename' of undefined

    TypeError: Cannot read property 'filename' of undefined
        at router.get.html (./routes/index.js:11:74)
        at Layer.handle [as handle_request] (./node_modules/express/lib/router/layer.js:95:5)
        at next (./node_modules/express/lib/router/route.js:131:13)
        at Object.<anonymous> (./node_modules/multer/lib/make-middleware.js:52:37)
        at Object.immediate._onImmediate (timers.js:348:16)
        at processImmediate [as _immediateCallback] (timers.js:330:15)

------WebKitFormBoundaryxh3BZE3s5vvxVQ1n
Content-Disposition: form-data; name="audio"; filename=""
Content-Type: application/octet-stream


------WebKitFormBoundaryxh3BZE3s5vvxVQ1n--

来自 ./record 的 AJAX POST 或来自 ./upload 的 AJAX POST

<form action="/audio" method="post" enctype="multipart/form-data">
<input type="file" name="audio" required="">
<button type="submit">Submit</button>
</form>

------WebKitFormBoundary47iCp5HAMwe089e4
Content-Disposition: form-data; name="audio"; filename="audio.wav"
Content-Type: audio/wav


------WebKitFormBoundary47iCp5HAMwe089e4--

以下技巧有效,但它仍然在同一页面上,这不是我想要的。

document.open();
document.write(<XMLHttpRequest>.responseText);
document.close();

此外,像套接字/流/ session /cookies之类的东西有点矫枉过正。我只是想保持简单,我希望有一种方法可以将 FormData 作为请求发送,并让浏览器直接处理来自服务器的响应。如果这是不可能的,那么请告诉我一个简单的方法来实现这一点。

感谢任何想法和建议。谢谢。

最佳答案

我也遇到了同样的问题,这就是我最终所做的。我将 POST 处理程序从返回重定向更改为返回正文中包含重定向 URL 的响应。然后我就这样做了(而不是写入文档技巧):

redirectURL = <XMLHttpRequest>.responseText;
window.location = redirectURL;

关于javascript:发送带有音频文件的 POST,然后重定向到新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37210113/

相关文章:

javascript - Three.js - 绕轴旋转 Object3D

javascript - 当对象数组的属性值改变时触发函数

javascript - 如何使用 overflow-x :scroll? 隐藏滚动条

javascript - ASP .net 不触发提交事件

javascript - Heroku + Node : Cannot find module error

javascript - 在 Bootstrap 的按钮内对齐两个元素时出现问题

javascript - JQuery/JavaScript : How to put a thing back where it was on pageload?

javascript - 在全屏模式 Internet Explorer 中检测事件变化

Javascript:多个按钮,1 个类,不能使用 id。按 1 个按钮更改所有

php - 如何更改数据库更新中的元素