teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コードを編集

2017/04/29 08:29

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -2,11 +2,22 @@
2
2
 
3
3
  [ここのサンプル](http://improve-future.com/python-establish-light-server-to-share-server-command.html)に、cgiでフォームから取り出したバイナリーデータをWAVファイルとしてセーブするサンプルがあります。
4
4
 
5
- 上記を参考に、一旦サーバー上の一時ファイルへWAVファイルを格納できたら、その後以下のようにしてwaveオブジェクトを生成し、フレームレートやフレーム数を取り出せます。
5
+ 上記を参考に、一旦サーバー上の一時ファイルへWAVファイルを格納、その後waveオブジェクトを生成し、フレームレートやフレーム数を取り出すといった部分のみコードを書いてみました
6
6
 
7
7
  ```python
8
+ ...
9
+ waveFile = form['file']
10
+ # save file
11
+ fout = file("tmp/tmp0000.wav", "wb")
12
+ while True:
13
+ chunk = waveFile.file.read(1024 * 1024 * 10)
14
+ if not chunk:
15
+ break
16
+ fout.write(chunk)
17
+ fout.close()
8
- //一旦サーバーの'/tmp/tmp0000.wav'にセーブしたとす
18
+ //これでサーバーの'tmp/tmp0000.wav'にWAVファイルができてい
9
- wf = wave.open('/tmp/tmp0000.wav')
19
+ wf = wave.open('tmp/tmp0000.wav')
10
20
  length = float(wf.getnframes()) / wf.getframerate() # 波形長さ(秒
11
21
  ...
12
- ```
22
+ ```
23
+ 上記はformにfileが指定されていなかった場合のエラーチェックなどは省略しています。CGIをテストできる環境がないため間違いなどありましたらご容赦ください。