回答編集履歴

1

コード修正

2021/08/24 05:39

投稿

int32_t
int32_t

スコア21601

test CHANGED
@@ -2,4 +2,32 @@
2
2
 
3
3
 
4
4
 
5
- Google Chrome など、[File System Access API](https://wicg.github.io/file-system-access/) をサポートしているブラウザであれば、[`showDirectoryPicker()`](https://wicg.github.io/file-system-access/#api-showdirectorypicker)でユーザにディレクトリを指定してもらって、[`getFileHandle('name.mid', {create:true})`](https://wicg.github.io/file-system-access/#dom-filesystemdirectoryhandle-getfilehandle) でファイルを作ることが可能だと思います。
5
+ Google Chrome など、[File System Access API](https://wicg.github.io/file-system-access/) をサポートしているブラウザであれば、[`showDirectoryPicker()`](https://wicg.github.io/file-system-access/#api-showdirectorypicker)で**ユーザにディレクトリを指定してもらって**、[`getFileHandle('name.mid', {create:true})`](https://wicg.github.io/file-system-access/#dom-filesystemdirectoryhandle-getfilehandle) でファイルを作ることが可能す。
6
+
7
+
8
+
9
+ (どっちにしても、ウェブページ側でファルダを指定することはセキュリティ上の理由で不可能です。)
10
+
11
+
12
+
13
+ 以下、サンプルコードです。https:// でのみ動きます。
14
+
15
+ ```js
16
+
17
+ button.addEventListener('click', async () => {
18
+
19
+ ...
20
+
21
+ let dirHandle = await window.showDirectoryPicker();
22
+
23
+ let fileHandle = await dirHandle.getFileHandle('name.midi', {create:true});
24
+
25
+ let stream = await fileHandle.createWritable();
26
+
27
+ await stream.write(new MidiWriter.Writer(track).buildFile());
28
+
29
+ await stream.close();
30
+
31
+ });
32
+
33
+ ```