厚会有妻δ 2024-04-26 14:38 采纳率: 50%
浏览 13
已结题

input file 写了 accept="image/png" window系统 Chrome 为什么可以上传jpg

input file 写了 accept="image/png" window系统 Chrome 为什么可以上传jpg。。。 mac就限制了 window没限制如何解决

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2024-04-26 14:38
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【问题概括】:这个问题的目的是解决在Windows系统下使用Chrome浏览器时,即使在<input type="file">元素中设置了accept="image/png"属性,用户仍然能够上传.jpg格式图片的问题。

    【问题出现原因】:根据标题和详细内容,这个问题的出现可能是因为不同浏览器或操作系统对accept属性的支持和解析存在差异。在某些情况下,浏览器可能不会严格按照accept属性的值来限制文件类型,尤其是在Windows系统下的Chrome浏览器。此外,用户可能通过修改文件后缀名的方式绕过前端的限制,但这种限制本身并不是安全的,因为它可以被绕过。

    【问题解决方案】:为了更有效地限制文件类型,可以采取以下措施:

    1. 前端验证:除了使用accept属性外,还可以通过JavaScript对用户选择的文件进行额外的验证,确保其MIME类型符合要求。

    2. 后端验证:在服务器端进行文件类型的验证,这是最安全的方法,因为用户无法绕过服务器端的检查。

    3. 教育用户:在用户界面上明确告知用户只接受特定类型的文件,减少用户尝试上传错误类型文件的可能性。

    【提供代码】:

    <!-- HTML -->
    <form method="post" enctype="multipart/form-data">
      <label for="file">选择要上传的文件:</label>
      <input type="file" id="file" name="file" accept="image/png" onchange="validateFileType(this)">
      <button type="submit">提交</button>
    </form>
    
    <!-- JavaScript -->
    <script>
      function validateFileType(fileInput) {
        var file = fileInput.files[0];
        var allowedTypes = ['image/png']; // 允许的文件类型
        for (var i = 0; i < allowedTypes.length; i++) {
          // 检查文件的MIME类型是否在允许的列表中
          if(file.type === allowedTypes[i]) {
            return true;
          }
        }
        alert('不允许的文件类型,请选择PNG图片文件。');
        fileInput.value = ''; // 清除选择,防止表单提交
        return false;
      }
    </script>
    

    【代码运行方式】:将上述HTML和JavaScript代码放入一个HTML文件中,然后在支持JavaScript的Web浏览器中打开该文件。

    【代码预期运行结果】:当用户尝试上传非PNG格式的图片时,会弹出一个警告框提示用户,并清除文件选择,阻止表单提交。

    【推荐相关链接】:

    1. MDN Web Docs - <input type="file">【4】
    2. CSDN - input file 上传图片时,文件格式限制【1】
    3. 博客园 - input只允许上传图片类型文件【3】
    4. CSDN - 通过 accept 限制上传文件类型【5】
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月4日
  • 已采纳回答 4月26日
  • 修改了问题 4月26日
  • 创建了问题 4月26日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表