AlistGo/alist · error

upload slice %d failed: %w

Error message

upload slice %d failed: %w

What it means

Error "upload slice %d failed: %w" thrown in AlistGo/alist.

Source

Thrown at drivers/123_open/upload.go:128

			break
		}
		sliceNo := i + 1
		offset := i * sliceSize
		length := min(sliceSize, size-offset)
		threadG.Go(func() error {
			sliceMD5, err := utils.HashReader(utils.MD5, io.NewSectionReader(tmpF, offset, length))
			if err != nil {
				return fmt.Errorf("calculate md5 of slice %d failed: %w", sliceNo, err)
			}
			reader := &progressReader{
				Reader:   io.NewSectionReader(tmpF, offset, length),
				progress: progress,
			}
			server := servers[int(i)%len(servers)]
			err = d.client.Upload.UploadSlice(uploadCtx, server, created.PreuploadID, sliceNo, sliceMD5,
				driver.NewLimitedUploadStream(uploadCtx, reader))
			if err != nil {
				return fmt.Errorf("upload slice %d failed: %w", sliceNo, err)
			}
			return nil
		})
	}
	if err := threadG.Wait(); err != nil {
		return nil, err
	}
	if err := ctx.Err(); err != nil {
		return nil, err
	}

	// The server merges and verifies the slices asynchronously. While it is
	// working it may answer either with completed=false or with an
	// undocumented business error (observed: code 20103, "文件正在..."), so
	// both are treated as "not finished yet" and the last one is only
	// reported once the attempts run out.
	var lastErr error
	for i := 0; i < completeMaxPolls; i++ {

View on GitHub (pinned to 843d9dc814)

Solutions

  1. Inspect the underlying error details in the message, fix the indicated cause (credentials, network, or provider-side failure), and retry.

When it happens

Trigger: Thrown at drivers/123_open/upload.go:128 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of AlistGo/alist@843d9dc814 (2026-08-15). Data as JSON: /api/errors/688df3e0c2a62af1. Report an issue: GitHub.