You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LightRoom Classic Lua插件上传文件触发fileSize空值报错如何解决?

解决方案

报错?:0: attempt to perform arithmetic on field 'fileSize' (a nil value)的核心原因是LrHttp.postMultipart接口在处理你传入的文件参数时,无法正常读取到目标文件的大小,在计算请求体长度的环节触发了空值运算错误,可按以下步骤修复:

  • 修复Windows路径转义错误
    Lua字符串中反斜杠\是转义字符,你当前写的路径没有转义,会导致实际读取的路径无效,文件无法被定位。修改路径写法,同时没必要给常量字符串套assert:
-- 反斜杠需要双写转义
local filePath = "C:\\Users\\Ankit\\Desktop\\Hangman.PNG"
  • 提前校验文件有效性
    调用上传接口前先判断文件是否存在,排除路径错误导致的读取失败,如果运行时提示LrFileUtils未定义,在代码头部加local LrFileUtils = import 'LrFileUtils'引入对应模块即可:
if not LrFileUtils.exists(filePath) then
  LrDialogs.message("文件错误", "目标文件不存在:" .. filePath)
  return
end
local fileName = LrPathUtils.leafName(filePath)
-- 主动读取文件大小,避免SDK内部读取失败
local fileSize = LrFileUtils.fileSize(filePath)
  • 补全mimeChunk的必填参数
    部分版本的Lightroom SDK要求文件类型的mime块显式传入fileSize字段,调整你的mime块构造逻辑:
local mimeChunks = {}
mimeChunks[#mimeChunks + 1] = {
  name = 'api_sig',
  value = "test value"
}
mimeChunks[#mimeChunks + 1] = {
  name = "file",
  filePath = filePath,
  fileName = fileName,
  contentType = "application/octet-stream",
  fileSize = fileSize -- 新增显式传入的文件大小字段
}

修改完成后再调用LrHttp.postMultipart即可正常触发请求。

内容的提问来源于stack exchange,提问作者ankitkanojia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:48:00