1
1
let new_directory_name = document . getElementById ( "name" ) ;
2
2
let files = document . getElementById ( "files" ) ;
3
+ let dirs = document . getElementById ( "dirs" ) ;
3
4
4
5
var url_base = window . location ;
5
6
var current_path ;
@@ -148,8 +149,21 @@ async function mkdir(e) {
148
149
}
149
150
150
151
async function upload ( e ) {
151
- for ( const file of files . files ) {
152
- let file_path = new URL ( "/fs" + current_path + file . name , url_base ) ;
152
+ let made_dirs = new Set ( ) ;
153
+ for ( const file of [ ...files . files , ...dirs . files ] ) {
154
+ let file_name = file . name ;
155
+ if ( file . webkitRelativePath ) {
156
+ file_name = file . webkitRelativePath ;
157
+ let components = file_name . split ( "/" ) ;
158
+ components . pop ( ) ;
159
+ let parent_dir = components . join ( "/" ) ;
160
+ if ( ! made_dirs . has ( parent_dir ) ) {
161
+ new_directory_name . value = parent_dir ;
162
+ await mkdir ( null ) ;
163
+ made_dirs . add ( parent_dir ) ;
164
+ }
165
+ }
166
+ let file_path = new URL ( "/fs" + current_path + file_name , url_base ) ;
153
167
const response = await fetch ( file_path ,
154
168
{
155
169
method : "PUT" ,
@@ -165,6 +179,7 @@ async function upload(e) {
165
179
}
166
180
}
167
181
files . value = "" ;
182
+ dirs . value = "" ;
168
183
upload_button . disabled = true ;
169
184
}
170
185
@@ -196,10 +211,14 @@ mkdir_button.onclick = mkdir;
196
211
let upload_button = document . getElementById ( "upload" ) ;
197
212
upload_button . onclick = upload ;
198
213
199
- upload_button . disabled = files . files . length == 0 ;
214
+ upload_button . disabled = files . files . length == 0 && dirs . files . length == 0 ;
200
215
201
216
files . onchange = ( ) => {
202
- upload_button . disabled = files . files . length == 0 ;
217
+ upload_button . disabled = files . files . length == 0 && dirs . files . length == 0 ;
218
+ }
219
+
220
+ dirs . onchange = ( ) => {
221
+ upload_button . disabled = files . files . length == 0 && dirs . files . length == 0 ;
203
222
}
204
223
205
224
mkdir_button . disabled = new_directory_name . value . length == 0 ;
0 commit comments