xpzouying/xiaohongshu-mcp · error
上传第%d张图片失败
Error message
上传第%d张图片失败
What it means
uploadImages 定位到第 i+1 张的输入框后 SetFiles 设置文件失败:文件读取异常或 go-rod 与页面 DOM 交互中断,导致该张图片未真正上传。
Source
Thrown at xiaohongshu/publish.go:257
func uploadImages(page *rod.Page, imagesPaths []string) error {
validPaths := make([]string, 0, len(imagesPaths))
for _, path := range imagesPaths {
if _, err := os.Stat(path); os.IsNotExist(err) {
logrus.Warnf("图片文件不存在: %s", path)
continue
}
validPaths = append(validPaths, path)
logrus.Infof("获取有效图片:%s", path)
}
// 逐张上传:每张上传后等待预览出现,再上传下一张
for i, path := range validPaths {
uploadInput, err := findImageUploadInput(page, i == 0)
if err != nil {
return errors.Wrapf(err, "查找上传输入框失败(第%d张)", i+1)
}
if err := uploadInput.SetFiles([]string{path}); err != nil {
return errors.Wrapf(err, "上传第%d张图片失败", i+1)
}
slog.Info("图片已提交上传", "index", i+1, "path", path)
// 等待当前图片上传完成(预览元素数量达到 i+1),最多等 60 秒
if err := waitForUploadComplete(page, i+1); err != nil {
return errors.Wrapf(err, "第%d张图片上传超时", i+1)
}
time.Sleep(1 * time.Second)
}
return nil
}
// findImageUploadInput 查找图片上传的输入框
func findImageUploadInput(page *rod.Page, first bool) (*rod.Element, error) {
if first {
return page.Element(".upload-input")View on GitHub (pinned to 332d196854)
Solutions
- 确认图片文件存在且可读
- 重试该张图片上传
- 检查页面是否中途刷新
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at xiaohongshu/publish.go:257 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05).
Data as JSON: /api/errors/1e2520f58a3319b4.
Report an issue: GitHub.