C#报错Guid应包含32位带4短横字符 上传图片以Guid命名存文件夹问题
错误原因
你报错的核心原因是代码逻辑错误:你尝试将用户上传的原始文件名转换为Guid格式,代码行如下:Guid ImageFileName = new Guid ((request.file.FileName).ToString());
普通用户上传的文件名根本不符合「32位字符+4个短横线」的Guid规范格式,所以直接抛出格式校验错误。
正确修改方案
你需要的是生成一个全新的唯一Guid作为文件名,而非转换现有文件名,同时要保留原始文件的扩展名,避免存储的文件无法正常识别,修改逻辑如下:
- 替换错误的Guid创建代码:
// 生成全新的唯一Guid Guid newFileGuid = Guid.NewGuid(); // 提取原始文件的扩展名 string fileExt = Path.GetExtension(request.file.FileName); // 拼接为带扩展名的最终文件名 string ImageFileName = $"{newFileGuid}{fileExt}";
- 优化路径拼接逻辑,避免转义符错误,替换原MemoryStream写入的代码块:
// 用Path.Combine处理路径拼接,兼容性更好 var path = Path.Combine(Environment.CurrentDirectory, "File"); if (!Directory.Exists(path)) Directory.CreateDirectory(path); // 拼接完整文件存储路径 var fullFilePath = Path.Combine(path, ImageFileName); // 直接写入字节数组,简化代码 File.WriteAllBytes(fullFilePath, bytes);
额外提示:你当前代码仅完成了文件本地存储,并未将文件路径/文件名写入要入库的Slider实体中,建议给
mapped对象的对应存储路径字段赋值,后续才能正常访问到上传的图片。
内容的提问来源于stack exchange,提问作者user16695025
相关产品推荐
相关产品推荐

