如何停止提交如果我们在php中选择了错误的文件

时间:2017-09-28 05:06:38

标签: javascript php codeigniter

  

如果我在输入中选择了错误的文件,我想停止表单提交   文件通过js验证或从任何其他方法。当前,当我   通过文件字段选择word文件,它提交表单但返回给我   警告这种文件你无法上传和删除输入   字段值如何阻止这个..

并且js停止错误的图像文件,但它不起作用::

$("#profile_pic").change(function () {
  var fileExtension = ['jpeg', 'jpg', 'png', 'gif'];
  if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
      alert("Only formats are allowed : "+fileExtension.join(','));
       return false;
  }
});

3 个答案:

答案 0 :(得分:1)

 <input type="file" accept=".jpeg,.jpg,.png,.gif"/>;

在文件输入标记上添加接受属性。并准确指定允许发布的文件扩展名类型。

答案 1 :(得分:0)

可以只检查文件扩展名,但用户可以轻松地将virus.exe重命名为virus.jpg并且&#34;传递&#34;验证。

对于它的价值,这里是检查文件扩展名的代码,如果不符合其中一个有效扩展名则中止:(选择无效文件并尝试提交以查看正在运行的警报)

example link

答案 2 :(得分:0)

因为无论发生什么,都会发生在浏览器中,对这个问题没有任何可靠的解决方案。 当您发现扩展程序无效时,您可以禁用表单/按钮/输入,但这不会阻止任何人使用开发人员工具并将其启用 - 毕竟允许他们提交表单。

正如@Nishantha Kumara所提到的 - 更改文件扩展名是黑客尝试发送受感染文件的众所周知的方法之一,因此依赖扩展并不能真正保证你的任何东西。

确保只上传具有有效扩展名的文件的唯一真正方法是通过检查他们的mime typeextension来对服务器进行验证 - 但是这些都不能保证该文件未被感染 - 为此,您可能必须在上传后对其进行某种防病毒扫描。

如果只是为了在浏览器中禁用表单而你没有其他任何事情,那么当选择了扩展名不正确的文件时,你可以简单地禁用表单/按钮,但是再次 - 这应该被检测到/在选择文件时启用,以确保首先无法选择扩展名错误的文件。