{"record":{"id":"aba32c28557066db","repo":"AlistGo/alist","slug":"dir-name-is-empty","errorCode":null,"errorMessage":"dir name is empty","messagePattern":"dir name is empty","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"drivers/guangyapan/driver.go","lineNumber":248,"sourceCode":"\n\turl := strings.TrimSpace(resp.Data.SignedURL)\n\tif url == \"\" {\n\t\turl = strings.TrimSpace(resp.Data.DownloadURL)\n\t}\n\tif url == \"\" {\n\t\treturn nil, errors.New(\"empty download url\")\n\t}\n\treturn &model.Link{URL: url}, nil\n}\n\nfunc (d *GuangYaPan) MakeDir(ctx context.Context, parentDir model.Obj, dirName string) error {\n\tif err := d.ensureAccessToken(ctx); err != nil {\n\t\treturn err\n\t}\n\n\tname := strings.TrimSpace(dirName)\n\tif name == \"\" {\n\t\treturn errors.New(\"dir name is empty\")\n\t}\n\n\tparentID := parentDir.GetID()\n\n\tvar out createDirResp\n\tif err := d.postAPI(ctx, \"/nd.bizuserres.s/v1/file/create_dir\", map[string]any{\n\t\t\"parentId\": parentID,\n\t\t\"dirName\":  name,\n\t}, &out); err != nil {\n\t\treturn err\n\t}\n\tif !strings.EqualFold(strings.TrimSpace(out.Msg), \"success\") {\n\t\treturn fmt.Errorf(\"make dir failed: %s\", strings.TrimSpace(out.Msg))\n\t}\n\treturn nil\n}\n\nfunc (d *GuangYaPan) Rename(ctx context.Context, srcObj model.Obj, newName string) error {","sourceCodeStart":230,"sourceCodeEnd":266,"githubUrl":"https://github.com/AlistGo/alist/blob/843d9dc8149126976b2625911e45a4d3ffd6f2f5/drivers/guangyapan/driver.go#L230-L266","documentation":"GuangYaPan MakeDir trims the requested directory name and rejects empty strings before calling the remote API. This is a client-side validation guard so the provider is never asked to create a nameless folder.","triggerScenarios":"Calling MakeDir with a name consisting only of whitespace, or with an empty string — e.g. UI transmitted the form before the user typed a name, or upstream code passed an unvalidated variable.","commonSituations":"Front-end form submitted empty; programmatic mkdir where the name variable was never populated; names made only of spaces pasted by accident.","solutions":["Validate/require a non-empty folder name in the calling UI before submitting","Trim input client-side and reject blank names with a user-facing message","If scripting, assert name != \"\" before invoking MakeDir"],"exampleFix":"// before\nerr := fs.MakeDir(ctx, \"/gy/\", \" \")\n// after\nname := strings.TrimSpace(input)\nif name == \"\" { return errors.New(\"folder name required\") }\nerr := fs.MakeDir(ctx, \"/gy/\", name)","handlingStrategy":"validation","validationCode":"name := strings.TrimSpace(dirName)\nif name == \"\" {\n\treturn errors.New(\"folder name is required\")\n}\nreturn d.MakeDir(ctx, parentDir, name)","typeGuard":"func validDirName(s string) bool { return strings.TrimSpace(s) != \"\" }","tryCatchPattern":null,"preventionTips":["Require non-empty names in upload/mkdir forms client-side","Trim user input before submission","Disable submit buttons until required fields are filled"],"tags":["guangyapan","validation","mkdir","driver"],"backgroundTag":null,"analyzedSha":"843d9dc8149126976b2625911e45a4d3ffd6f2f5","analyzedAt":"2026-08-15T12:14:11.722Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}