Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 服务器端输入类型文件的JQuery验证失败_Php_Javascript_Jquery_Forms_Jquery Validate - Fatal编程技术网

Php 服务器端输入类型文件的JQuery验证失败

Php 服务器端输入类型文件的JQuery验证失败,php,javascript,jquery,forms,jquery-validate,Php,Javascript,Jquery,Forms,Jquery Validate,所以我尝试了一个非常简单的表单,其中有一个字段可以上传图像。输入类型为文件。还有一个提交按钮。表单没有action=“”,客户端的验证使用Jquery验证插件进行。客户端的验证进行得很完美(它返回文件类型错误),但我一单击upload,服务器端(PHP文件)的上传就失败了。我认为服务器端没有读取该文件,因为if条件失败。我的代码是: <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>

所以我尝试了一个非常简单的表单,其中有一个字段可以上传图像。输入类型为文件。还有一个提交按钮。表单没有action=“”,客户端的验证使用Jquery验证插件进行。客户端的验证进行得很完美(它返回文件类型错误),但我一单击upload,服务器端(PHP文件)的上传就失败了。我认为服务器端没有读取该文件,因为if条件失败。我的代码是:

<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.20.custom.min.js"></script>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
<script language="javascript">
    $(document).ready(function(){
        $("#upload").validate({
            debug: false,
            rules: {
                file: {required: true, accept: "gif|png|jpg|jpeg"}
            },
            messages: {
                file: "*Please select a file",
            },
            submitHandler: function(form) {
                // do other stuff for a valid form
                var phpurl = 'upload_file.php';
                $.post(phpurl, $("#upload").serialize(), function(data) {
                    alert(data);
                });
            }
        });
    });
</script>

问题是不能通过ajax post提交文件,因为PHP不会将它们上传到服务器

理论上,您应该创建一个iframe并将表单提交到那里。实际上,只需使用这个jquery插件…:)这将使这个过程变得容易

希望能有帮助

您需要使用有用的插件,该插件支持您想要上传的文件,而不是其他漂亮的选项

您可以使用验证插件的accept属性来允许所需的文件类型,以下是一个示例:

$("#form_id").validate({
  rules: {
    field: {
      required: true,
      filesize: 1048576,
      accept: "gif|jpeg"
    }
  }
});

那么,有没有一种方法可以做到这一点而不必放弃我的Jquery验证插件呢?只有在中使用的HTML5中才能使用Ajax上传文件,但是我同意将其提交到
iframe
通常是一种更简单的跨浏览器方式。因此,验证脚本存在问题。文件已验证,但如果我没有错,则无法使用$.post方法传递。不过我找到了一个解决办法。非常感谢。对不起,这不能回答我的问题。我的问题是针对我正在使用的JQuery验证插件的——它提供了对输入类型文件的支持。我只是使用插件验证它,然后将其发送到PHP文件进行处理。它不工作,请您给出任何示例程序或fiddler示例?
<form id="upload" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>
$("#form_id").validate({
  rules: {
    field: {
      required: true,
      filesize: 1048576,
      accept: "gif|jpeg"
    }
  }
});