Support long filenames in upload (#115)

appending '.dnl' to the filename shortens the available filename length by 4 chars. Now a long filename ist cut off first and then the dnl is appended resulting in a unique but short enough temp filename.
This commit is contained in:
Gregor Hartmann 2017-10-02 15:50:47 +02:00 committed by Marcos
parent a70fa745b0
commit c67ed16e10

View File

@ -60,11 +60,12 @@ return function (connection, req, args)
binaryData = binaryData .. string.char(currentByte) binaryData = binaryData .. string.char(currentByte)
end end
local mbTmpFilename = string.sub(mbFilename, 0, 27) .. '.dnl'
if (mbOffset > 0) then if (mbOffset > 0) then
file.open(mbFilename .. '.dnl','a+') file.open(mbTmpFilename,'a+')
else else
file.remove(mbFilename .. '.dnl') file.remove(mbTmpFilename)
file.open(mbFilename .. '.dnl','w+') file.open(mbTmpFilename,'w+')
end end
file.seek("set", mbOffset) file.seek("set", mbOffset)
file.write(binaryData) file.write(binaryData)
@ -74,8 +75,8 @@ return function (connection, req, args)
if (fileSize == mbLen + mbOffset) then if (fileSize == mbLen + mbOffset) then
file.remove(mbFilename) file.remove(mbFilename)
file.rename(mbFilename .. '.dnl', mbFilename) file.rename(mbTmpFilename, mbFilename)
file.remove(mbFilename .. '.dnl') file.remove(mbTmpFilename)
if (string.sub(mbFilename, -4) == '.lua') then if (string.sub(mbFilename, -4) == '.lua') then
file.remove(string.sub(mbFilename, 0, -3) .. "lc") file.remove(string.sub(mbFilename, 0, -3) .. "lc")