如何避免未选图片时出现对象引用未设置的错误?
解决未选择图片时提交表单的FileName获取错误问题
你遇到的问题本质是formFile对象存在,但FileName属性为空字符串,导致Path.Combine无法生成有效路径报错。之前的判断只检查了formFile是否为null,没覆盖FileName为空的场景;Try/Catch没生效大概率是没把报错的代码块完整包裹进去。
直接给你修正后的代码逻辑,核心是在执行文件操作前做完整校验:
var formFile = fileUpload.FormFile; // 多重校验:确保文件对象存在、文件名非空、文件有实际内容 if (formFile == null || string.IsNullOrWhiteSpace(formFile.FileName) || formFile.Length == 0) { // 这里返回错误提示,比如给前端返回"请选择有效的图片文件" return; } // 校验通过后再执行文件写入和数据库操作 var filePath = Path.Combine(fullPath, formFile.FileName); using (var stream = System.IO.File.Create(filePath)) { formFile.CopyTo(stream); } db.VytvoritPrispevekOnas(nazevPrispevku, textPrispevku,"/OnasImages/",formFile.FileName.ToString());
几点关键补充:
- 用
string.IsNullOrWhiteSpace判断文件名,能覆盖空字符串、全空格等无效场景 - 加上
formFile.Length == 0的判断,避免用户选择了空文件的情况 - 把文件流用
using包裹,无需手动调用stream.Close(),会自动释放资源,更安全 - 数据库操作放在文件写入之后,避免文件未成功写入但数据库已存记录的不一致问题
内容的提问来源于stack exchange,提问作者Drapys
相关产品推荐
相关产品推荐

