{"record":{"id":"1e2520f58a3319b4","repo":"xpzouying/xiaohongshu-mcp","slug":"d-1e2520","errorCode":null,"errorMessage":"上传第%d张图片失败","messagePattern":"上传第(.+?)张图片失败","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"xiaohongshu/publish.go","lineNumber":257,"sourceCode":"func uploadImages(page *rod.Page, imagesPaths []string) error {\n\tvalidPaths := make([]string, 0, len(imagesPaths))\n\tfor _, path := range imagesPaths {\n\t\tif _, err := os.Stat(path); os.IsNotExist(err) {\n\t\t\tlogrus.Warnf(\"图片文件不存在: %s\", path)\n\t\t\tcontinue\n\t\t}\n\t\tvalidPaths = append(validPaths, path)\n\t\tlogrus.Infof(\"获取有效图片：%s\", path)\n\t}\n\n\t// 逐张上传：每张上传后等待预览出现，再上传下一张\n\tfor i, path := range validPaths {\n\t\tuploadInput, err := findImageUploadInput(page, i == 0)\n\t\tif err != nil {\n\t\t\treturn errors.Wrapf(err, \"查找上传输入框失败(第%d张)\", i+1)\n\t\t}\n\t\tif err := uploadInput.SetFiles([]string{path}); err != nil {\n\t\t\treturn errors.Wrapf(err, \"上传第%d张图片失败\", i+1)\n\t\t}\n\n\t\tslog.Info(\"图片已提交上传\", \"index\", i+1, \"path\", path)\n\n\t\t// 等待当前图片上传完成（预览元素数量达到 i+1），最多等 60 秒\n\t\tif err := waitForUploadComplete(page, i+1); err != nil {\n\t\t\treturn errors.Wrapf(err, \"第%d张图片上传超时\", i+1)\n\t\t}\n\t\ttime.Sleep(1 * time.Second)\n\t}\n\n\treturn nil\n}\n\n// findImageUploadInput 查找图片上传的输入框\nfunc findImageUploadInput(page *rod.Page, first bool) (*rod.Element, error) {\n\tif first {\n\t\treturn page.Element(\".upload-input\")","sourceCodeStart":239,"sourceCodeEnd":275,"githubUrl":"https://github.com/xpzouying/xiaohongshu-mcp/blob/332d196854a9eac0d2b8c2c0e3d0cc43139d724c/xiaohongshu/publish.go#L239-L275","documentation":"uploadImages 定位到第 i+1 张的输入框后 SetFiles 设置文件失败：文件读取异常或 go-rod 与页面 DOM 交互中断，导致该张图片未真正上传。","triggerScenarios":"Thrown at xiaohongshu/publish.go:257 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["确认图片文件存在且可读","重试该张图片上传","检查页面是否中途刷新"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"332d196854a9eac0d2b8c2c0e3d0cc43139d724c","analyzedAt":"2026-09-05T22:22:55.988Z","contentChangedAt":"2026-09-05T22:22:55.988Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}