AlistGo/alist · error
upload failed, status: %d
Error message
upload failed, status: %d
What it means
Thrown by ILanZou's upload after the poll loop exited: the first result entry exists but its Status is not 1 (success). The numeric status is included. This is the server reporting the upload finished with a failure state (or the loop's iteration cap hit while status was still pending, leaving a non-1 status like 0).
Source
Thrown at drivers/ilanzou/driver.go:374
"tokenTime=" + time.Now().Format("Mon Jan 02 2006 15:04:05 GMT-0700 (MST)"),
}
queryString := strings.Join(params, "&")
req.SetQueryString(queryString).SetResult(&resp)
})
if err != nil {
return nil, err
}
if len(resp.List) == 0 {
return nil, fmt.Errorf("upload failed, empty response")
}
if resp.List[0].Status == 1 {
break
}
time.Sleep(time.Second * 1)
}
file := resp.List[0]
if file.Status != 1 {
return nil, fmt.Errorf("upload failed, status: %d", resp.List[0].Status)
}
return &model.Object{
ID: strconv.FormatInt(file.FileId, 10),
//Path: ,
Name: file.FileName,
Size: s.GetSize(),
Modified: s.ModTime(),
Ctime: s.CreateTime(),
IsFolder: false,
HashInfo: utils.NewHashInfo(utils.MD5, etag),
}, nil
}
//func (d *ILanZou) Other(ctx context.Context, args model.OtherArgs) (interface{}, error) {
// return nil, errs.NotSupport
//}
var _ driver.Driver = (*ILanZou)(nil)View on GitHub (pinned to 843d9dc814)
Solutions
- Retry the Put — transient server-side processing failures commonly resolve on a second attempt.
- Free account space / check quota if the status consistently maps to storage limits.
- Rename the file (remove characters the provider may reject) and retry.
- Raise the poll-iteration budget (or total wait) in the driver if the status is 0-pending rather than a hard failure code.
Defensive patterns
Strategy: retry
Try / catch
obj, err := d.Put(ctx, dstDir, stream, up)
if err != nil {
if strings.Contains(err.Error(), "upload failed, status") && statusIsPending(err) {
time.Sleep(3 * time.Second)
obj, err = d.Put(ctx, dstDir, stream, up) // or re-poll results
}
if err != nil { return err }
} Prevention
- Retry uploads once on non-1 status — transient processing failures are common
- Check account quota before large uploads
- Avoid filenames/characters the provider moderates
When it happens
Trigger: Server-side processing failure of the uploaded blob; upload quota exceeded; file content rejected by moderation; poll loop terminated while status was still 'processing' (0) so it never reached 1.
Common situations: Large files where server-side processing exceeds the poll budget; accounts at storage quota; files with names/content the provider rejects; slow server days where every upload ends in a non-1 status.
Related errors
- upload failed, empty response
- MediaFire poll upload failed: %s
- 123 offline download cannot target the root directory, pick
- file_id is required
- same-name dirs cannot be Put
AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15).
Data as JSON: /api/errors/5c50c69f8f7e5629.
Report an issue: GitHub.