-
Notifications
You must be signed in to change notification settings - Fork 0
/
httpserver-static.lua
29 lines (28 loc) · 1.04 KB
/
httpserver-static.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- httpserver-static.lua
-- Part of nodemcu-httpserver, handles sending static files to client.
-- Author: Marcos Kirsch
return function (connection, req, args)
header =dofile("httpserver-header.lc");
header(connection, 200, args.ext, args.isGzipped)
-- Send file in little chunks
local bytesRemaining = file.list()[args.file]
-- Chunks larger than 1024 don't work.
-- https://github.com/nodemcu/nodemcu-firmware/issues/1075
local chunkSize = 1024
local fileHandle = file.open(args.file)
while bytesRemaining > 0 do
local bytesToRead = 0
if bytesRemaining > chunkSize then bytesToRead = chunkSize else bytesToRead = bytesRemaining end
local chunk = fileHandle:read(bytesToRead)
connection:send(chunk)
bytesRemaining = bytesRemaining - #chunk
--print(args.file .. ": Sent "..#chunk.. " bytes, " .. bytesRemaining .. " to go.")
chunk = nil
collectgarbage()
end
-- print("Finished sending: ", args.file)
fileHandle:close()
fileHandle = nil
header = nil
collectgarbage()
end