siyuan-note/siyuan · error

Conf.Language(94)

Error message

Conf.Language(94)

What it means

After the 401 check, uploadAssets2Cloud inspects the JSON body's Code field; a non-zero Code means the cloud server accepted the request but rejected the upload, producing fmt.Errorf(Conf.Language(94), requestResult.Msg) — "Upload failed: %s" with the server's message. This is a server-reported business error surfaced through the localized upload-failed wrapper.

Solutions

  1. Read the wrapped requestResult.Msg in the error message and address the server-stated cause
  2. Free up cloud storage quota or upgrade the subscription if quota/plan limits are the cause
  3. Reduce asset size or convert to an allowed type before uploading
  4. Retry later if the server message indicates temporary unavailability; report persistent server errors to SiYuan support

Example fix

// before
err = fmt.Errorf(Conf.Language(94), requestResult.Msg)
// caller: log.Fatal(err)
// after (caller handles server msg)
if err != nil {
    var uploadErr *fmt.WrapError
    log.Printf("cloud upload rejected: %v", err) // inspect server Msg inside
    return retryable(err) ? retryLater(err) : err
}
Defensive patterns

Strategy: try-catch

Validate before calling

if assetSize > maxCloudAssetSize {
    return errors.New("asset exceeds cloud upload size limit")
}

Try / catch

if err != nil && strings.Contains(err.Error(), "Upload failed:") {
    serverMsg := extractServerMsg(err) // quota/type/account hints live in the wrapped Msg
    handleServerRejection(serverMsg)
}

Prevention

When it happens

Trigger: Uploading assets to SiYuan cloud when the server responds HTTP 200 but with requestResult.Code != 0 — e.g. storage quota exceeded, file type/size rejected, or account not authorized for cloud storage.

Common situations: Exceeding cloud storage quota; uploading disallowed file types or oversized assets; subscription expired so cloud storage is disabled; server-side maintenance or policy changes rejecting uploads.

Related errors


AI-assisted analysis of siyuan-note/siyuan@9f775e8a12 (2026-09-19). Data as JSON: /api/errors/f54f664c6f52d2a9. Report an issue: GitHub.

Appendix: source

Thrown at kernel/model/assets.go:1497

			SetSuccessResult(requestResult).
			SetFile("file[]", absAsset).
			SetCookies(&http.Cookie{Name: "symphony", Value: uploadToken}).
			SetHeader("meta-type", metaType).
			SetHeader("biz-type", bizType).
			Post(util.GetCloudServer() + "/apis/siyuan/upload?ver=" + util.Ver)
		if nil != reqErr {
			logging.LogErrorf("upload assets failed: %s", reqErr)
			return count, ErrFailedToConnectCloudServer
		}

		if 401 == resp.StatusCode {
			err = errors.New(Conf.Language(31))
			return
		}

		if 0 != requestResult.Code {
			logging.LogErrorf("upload assets failed: %s", requestResult.Msg)
			err = fmt.Errorf(Conf.Language(94), requestResult.Msg)
			return
		}

		absAsset = filepath.ToSlash(absAsset)
		relAsset := absAsset[strings.Index(absAsset, "assets/"):]
		completedUploadAssets = append(completedUploadAssets, relAsset)
		logging.LogInfof("uploaded asset [%s]", relAsset)
		count++
	}

	if !ignorePushMsg {
		util.PushClearMsg(msgId)
	}

	if 0 < len(completedUploadAssets) {
		logging.LogInfof("uploaded [%d] assets", len(completedUploadAssets))
	}
	return

View on GitHub (pinned to 9f775e8a12)