Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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 如何在用户选择图片后立即提交表单?_Php_Jquery_Forms_Cgi - Fatal编程技术网

Php 如何在用户选择图片后立即提交表单?

Php 如何在用户选择图片后立即提交表单?,php,jquery,forms,cgi,Php,Jquery,Forms,Cgi,我有一个表单,我正试图弄清楚,在用户上传图片并验证它是图片后,如何提交表单。我正在尝试使用javascript验证正在上载的图像。尝试以下操作: <script> function submitFormAfterImageCheck() { if(/(\.jpeg|\.jpg|\.gif|\.png|\.tiff)$/.test(document.getElementById("myFile").value)) {

我有一个表单,我正试图弄清楚,在用户上传图片并验证它是图片后,如何提交表单。我正在尝试使用javascript验证正在上载的图像。

尝试以下操作:

<script>
    function submitFormAfterImageCheck()
    {
        if(/(\.jpeg|\.jpg|\.gif|\.png|\.tiff)$/.test(document.getElementById("myFile").value))
        {
            document.getElementById("myForm").submit();
        }
        else
        {
            alert("you can only upload an image");
        }
    }
</script>

函数submitFormAfterImageCheck()
{
if(/(\.jpeg\.jpg\.gif\.png\.tiff)$/.test(document.getElementById(“myFile”).value))
{
document.getElementById(“myForm”).submit();
}
其他的
{
警报(“您只能上载图像”);
}
}
以及HTML:

<input id="myFile" type="file" onchange="submitFormAfterImageCheck();" />

您可以使用Iframe来处理上载

<iframe src="upload.php" id="uploadHandler"></iframe>
在php文件
upload.php
:检查$\u FILES数组中上传的文件是否正常,并响应如下响应:

$allowed_extensions = array("jpg", "png", "gif");
if (in_array(end(explode(".", $_FILES['file_browser']['filename'])), $allowed_extensions)) {
    echo "upload OK";
}
else {
    echo "invalid file";
}

未经测试。。。但是:)

您可以在客户端检查文件扩展名,然后决定是否触发表单的提交,例如(jQuery样式):


$(函数(){
$('#fileDivId')。更改(函数(){
$this=$(this);
if($.inArray($this.val().split('.').pop().toLowerCase(),['jpg','jpeg','png','gif'])!=-1){
$this.parent().trigger('submit');
}
});
});
但这里有一些弱点:

1) 您仍然必须在服务器端清理图像

2) 不太清楚当输入类型为“file”时,$('inputId').val()如何工作。例如,Firefox4返回文件名,但如果我没记错的话,IE将返回文件的完整路径(C:\Docs\Img\etc),而且由于安全原因,它可能在某些浏览器中被禁用


3) 在我的代码中获取扩展部分并不完美-更简洁的情况:用户选择文件C:\Doc.img\file\u no\u ext,它返回“img\file\u no\u ext”

用户如何上传图片?通常情况下,他们必须先提交表格才能上传图片…请你再详细一点。您将使用JavaScript验证图片还是PHP?通过使用PHP的
,在上传文件之前,您无法检查文件。您可以在
中异步上传它,然后发回javascript,以执行您希望执行的任何操作我如何“发回javascript”?(代码方面)我已将javascript代码添加到文档的头部,并添加了以下代码:但它不会提交URL是什么?我可以完全按照你的需要来写:)哎呀!我错过了一个
,在
if()
的结尾,这真是太棒了,除了现在,无论我上传什么,我都会收到警告“你只能上传图像”。我尝试了.png、.tif等。您可以测试此函数是否有效
函数submitFormAfterImageCheck(){alert(this.value=''?“not working”:“working”);}
$allowed_extensions = array("jpg", "png", "gif");
if (in_array(end(explode(".", $_FILES['file_browser']['filename'])), $allowed_extensions)) {
    echo "upload OK";
}
else {
    echo "invalid file";
}
<script>
    $(function(){
        $('#fileDivId').change(function(){
            $this = $(this);
                if ($.inArray($this.val().split('.').pop().toLowerCase(), ['jpg', 'jpeg', 'png', 'gif']) != -1) {
                    $this.parent().trigger('submit');
                }
        });
    });
</script>
    <form action="post.php" method="POST">
        <input type="file" id="fileDivId">
    </form>