C#中if语句的OR逻辑不生效问题求助
解决多MIME类型OR判断失效的问题
哈哈,这种“单独测每个类型都正常,一组合就出问题”的bug简直是开发者日常的小噩梦!我帮你梳理几个最常见的坑,大概率能快速定位问题:
最容易踩的逻辑语法坑:很多人图省事会写成这种错误格式:
// 错误写法!第二个及以后的表达式是字符串常量,永远为true if (file.mimeType === 'image/jpeg' || 'image/png' || 'application/pdf') { // 这里不管文件类型是什么都会执行 }正确的写法应该是每个条件都要完整判断变量,或者用数组包含的方式更简洁:
// 写法1:完整的OR判断 if (file.mimeType === 'image/jpeg' || file.mimeType === 'image/png' || file.mimeType === 'application/pdf') { // 执行上传逻辑 } // 写法2:用数组includes更易维护 const allowedMimeTypes = ['image/jpeg', 'image/png', 'application/pdf']; if (allowedMimeTypes.includes(file.mimeType)) { // 执行上传逻辑 }MIME类型字符串拼写错误:比如把
image/jpeg写成image/jpg(虽然部分环境兼容,但标准MIME类型是jpeg),或者像application/vnd.openxmlformats-officedocument.spreadsheetml.sheet这种长类型写错了字符。单独测试时用的是正确字符串,组合时可能某个类型写错导致逻辑不生效。变量引用错误:比如你判断的变量不是实际获取到的MIME类型值——比如前端传的是
file.type,但后端处理时误用了其他变量,或者变量在判断前被修改覆盖了。
如果还是没解决,把你的具体代码片段贴出来,大家能更快帮你揪出问题~
内容的提问来源于stack exchange,提问作者kingtreelo
相关产品推荐
相关产品推荐

