More session state with web.
This commit is contained in:
@ -899,6 +899,16 @@ JSWORD: upload-success? { -- f }
|
|||||||
return context.filepick_result;
|
return context.filepick_result;
|
||||||
~
|
~
|
||||||
|
|
||||||
|
JSWORD: raw-download { data data_n mime mime_n filename filename_n -- }
|
||||||
|
var anchor = document.createElement('a');
|
||||||
|
var blob = new Blob([u8.slice(data, data + data_n)],
|
||||||
|
{type: context.GetRawString(u8, mime, mime_n)});
|
||||||
|
var url = URL.createObjectURL(blob);
|
||||||
|
anchor.setAttribute('href', url);
|
||||||
|
anchor.setAttribute('download', context.GetRawString(u8, filename, filename_n));
|
||||||
|
anchor.click();
|
||||||
|
~
|
||||||
|
|
||||||
JSWORD: log { a n -- }
|
JSWORD: log { a n -- }
|
||||||
console.log(GetString(a, n));
|
console.log(GetString(a, n));
|
||||||
~
|
~
|
||||||
|
|||||||
37
web/utils.fs
37
web/utils.fs
@ -22,6 +22,8 @@ web definitions
|
|||||||
' web-key? is key?
|
' web-key? is key?
|
||||||
' web-terminate is terminate
|
' web-terminate is terminate
|
||||||
|
|
||||||
|
0 value session?
|
||||||
|
|
||||||
: upload-file ( a n -- )
|
: upload-file ( a n -- )
|
||||||
upload-start
|
upload-start
|
||||||
begin yield upload-done? until
|
begin yield upload-done? until
|
||||||
@ -31,17 +33,40 @@ web definitions
|
|||||||
: upload ( "filename" ) bl parse dup assert upload-file ;
|
: upload ( "filename" ) bl parse dup assert upload-file ;
|
||||||
|
|
||||||
: include-file { a n -- }
|
: include-file { a n -- }
|
||||||
0 0 a n 0 getItem { len }
|
0 0 a n session? getItem { len }
|
||||||
here { buf } len allot
|
here { buf } len allot
|
||||||
buf len a n 0 getItem len = assert
|
buf len a n session? getItem len = assert
|
||||||
a n 0 removeItem
|
|
||||||
buf len evaluate
|
buf len evaluate
|
||||||
;
|
;
|
||||||
|
|
||||||
: ls 0 keyCount 0 do pad 80 i 0 getKey pad swap type cr loop ;
|
: cat ( "filename" )
|
||||||
: rm bl parse 0 removeItem ;
|
bl parse { name name# }
|
||||||
|
0 0 name name# session? getItem { len }
|
||||||
|
here len name name# session? getItem len = assert
|
||||||
|
here len type
|
||||||
|
;
|
||||||
|
|
||||||
: import s" _temp.fs" 2dup upload-file include-file ;
|
: download ( "filename" )
|
||||||
|
bl parse { name name# }
|
||||||
|
0 0 name name# session? getItem { len }
|
||||||
|
here len name name# session? getItem len = assert
|
||||||
|
here len s" application/octet-stream"
|
||||||
|
name name# raw-download
|
||||||
|
;
|
||||||
|
|
||||||
|
: ls
|
||||||
|
session? keyCount 0 ?do
|
||||||
|
pad 80 i session? getKey pad swap type cr
|
||||||
|
loop
|
||||||
|
;
|
||||||
|
|
||||||
|
: rm bl parse session? removeItem ;
|
||||||
|
|
||||||
|
: import
|
||||||
|
s" _temp.fs" 2dup upload-file
|
||||||
|
2dup >r >r include-file
|
||||||
|
r> r> session? removeItem
|
||||||
|
;
|
||||||
|
|
||||||
: yielding begin 50 ms yield again ;
|
: yielding begin 50 ms yield again ;
|
||||||
' yielding 10 10 task yielding-task
|
' yielding 10 10 task yielding-task
|
||||||
|
|||||||
Reference in New Issue
Block a user