lua - ?:0: 尝试对字段 'fileSize' 执行算术运算(一个 nil 值)
问题描述
如何解决错误或可能的解决方法?
伙计们,我使用 Lua 语言开发了插件,可以从 Adobe 的 LightRoom Classic 集成或运行。目前我需要上传或发送文件到服务器,但我不能。每次我调用 POST API 这是多部分/表单数据错误弹出“ ?:0:尝试对字段'fileSize'(一个零值)执行算术”。甚至没有调用 API,在调用 API 之前会弹出此错误。调试后,我可以确保可能的问题是创建具有文件类型的mimeChunks 。
我已经开发了如下代码,任何人都可以帮助我提出建议,以便我能够解决问题吗?
local filePath = assert("C:\Users\Ankit\Desktop\Hangman.PNG")
local fileName = LrPathUtils.leafName(filePath)
local mimeChunks = {}
mimeChunks[#mimeChunks + 1] = {
name = 'api_sig',
value = "test value"
}
mimeChunks[#mimeChunks + 1] = {
name = "file",
filePath = filePath,
fileName = fileName,
contentType = "application/octet-stream"
}
local postUrl = "API endpoint"
local result, hdrs = LrHttp.postMultipart(postUrl, mimeChunks)
if result then
LrDialogs.message("Form Values", result)
else
LrDialogs.message("Form Values", "API issue")
end
解决方案
最终图像或文件路径本身会导致问题,没有与此功能相关的此类指示或文章,但是是的,“附加反斜杠”肯定会起作用。请查看以下代码以获取更详细的通过动态选定文件或图像路径的分叉。
local function uploadFile(filePath)
local fileName = LrPathUtils.leafName( filePath )
local mimeChunks = {}
mimeChunks[ #mimeChunks + 1 ] = { name = 'api_sig', value = "test value"}
mimeChunks[#mimeChunks + 1] = {
name = "file",
filePath = filePath,
fileName = fileName,
contentType = "image/jpeg" --multipart/form-data --application/octet-stream
}
import "LrTasks".startAsyncTask(
function()
local postUrl = "http://cms.local.com/api/v1/upload"
local result, hdrs = LrHttp.postMultipart(postUrl, mimeChunks)
if result then
LrDialogs.message("Image uploaded.", result)
else
LrDialogs.message("Error", "API issue")
end
end
)
end
以上uploadFile方法会自动调用API 并发布表单数据集合。下面的代码用于调用uploadFile函数,该函数从目录中选择所有图像。
for p, photo in ipairs(LrApplication.activeCatalog()) do
uploadFile(assert(photo:getRawMetadata('path')));
end
上面的代码将帮助您使用 Adobe 的 LightRoom 插件选择分类日志。