【问题标题】:?:0: attempt to perform arithmetic on field 'fileSize' (a nil value)?:0: 尝试对字段 'fileSize' 执行算术运算(一个 nil 值)
【发布时间】:2021-09-24 03:55:42
【问题描述】:

如何解决错误或可能的解决方法?

伙计们,我使用 Lua 语言开发了插件,可以集成或从 Adob​​e 的 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

【问题讨论】:

  • 尝试转义字符串中的反斜杠。
  • 是的,该选项在这里有效。这就是问题所在。谢谢@lhf

标签: lua adobe


【解决方案1】:

最终图像或文件路径本身会导致问题,没有与此功能相关的此类指示或文章,但是“附加反斜杠”肯定会起作用。请查看以下代码以获取更详细的通过动态选择的文件或图像路径的分叉。

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

以上代码将帮助您使用 Adob​​e 的 LightRoom 插件选择分类日志。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-06
    • 2014-02-17
    • 1970-01-01
    • 2017-04-06
    • 2020-04-17
    • 2020-08-22
    • 1970-01-01
    相关资源
    最近更新 更多