HTML5 audio

可參考:http://www.html5rocks.com/en/tutorials/getusermedia/intro/

audio的src可用base64當連結

而blob只能在瀏覽器當下的session有效,因為它存在瀏覽器的記憶體中

要將blob當audio的src時要轉為blob類型的src

使用audio.src = window.URL.createObjectURL(s);

其中s為blob物件

轉完後會類似blob:http://localhost:8000/7ae545fe-cfac-413c-9c34-3fea70d842eb

但這個路徑存在瀏覽器記憶體,如果要存到database要先轉為base64

base64 to blob

參考此 http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript

blob to base64

參考此

http://stackoverflow.com/questions/18650168/convert-blob-to-base64

另外 atob btob

btob為encode 把值encode為base64

而atob為decode 把 base64轉為原始檔案的二進位格式

但是試很很多base64跟decode的字串都太長

所以最後還是轉為檔案存在server的硬碟內

使用formdata的方式ajax給server,一般post的方式只能傳字串,所以contentType才會用formdata,但要注意的是:

formdata不同於一般"application/x-www-form-urlencoded")的POST方法

formdata的POST不可指定contentType,如果指定了會收不到

Formdata Ajax範例如下

以下為完整的錄音然後存到express server的範例(使用multer)

PS:需先新建一個uploads資料夾於目錄,注意var storage的設定程式碼要放在post的路由前面

server.js

audio.ejs

Last updated

Was this helpful?