Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.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_Html_Forms - Fatal编程技术网

上载图像时出现PHP表单处理错误

上载图像时出现PHP表单处理错误,php,html,forms,Php,Html,Forms,我使用HTML上传图像和处理在我的表单中的PHP形式我需要以下 最多只能上载5个文件 我需要将所有图像名称存储到SQL数据库 HTML 使用上述代码,我需要将图像名称存储到SQL数据库中我建议您在此处查看: 在这里: 您可能希望用户可以多次执行这些操作: 单击浏览>选择文件>显示文件 但多文件上载的工作方式是,您在文件浏览器中选择多个文件一次(按住CTRL键)。这些是传递给$\u FILE变量的文件。我建议您多次这样做,直到最后选定的文件通过 编辑:如果您想向用户澄清这一点,您应该删除每个

我使用HTML上传图像和处理在我的表单中的PHP形式我需要以下

  • 最多只能上载5个文件
  • 我需要将所有图像名称存储到SQL数据库
HTML
使用上述代码,我需要将图像名称存储到SQL数据库中

我建议您在此处查看:

在这里:


您可能希望用户可以多次执行这些操作:

单击浏览>选择文件>显示文件

但多文件上载的工作方式是,您在文件浏览器中选择多个文件一次(按住CTRL键)。这些是传递给$\u FILE变量的文件。我建议您多次这样做,直到最后选定的文件通过

编辑:如果您想向用户澄清这一点,您应该删除每个文件浏览事件上的所有图像标记,以便仅显示上次选择的图像标记

测试以反映这一点:

<html>
    <body>
        <pre><?
        foreach ($_FILES['files']['name'] as $fileName  ) {
            echo $fileName."\n";
        }
    ?></pre>
        <form method="post" enctype="multipart/form-data">
            <input name="files[]" type="file" />
            <input name="submit" type="submit" />
        </form>
    </body>
</html>
    if (window.File && window.FileList && window.FileReader) {
        $("#files").on("change", function(e) {
            var files = e.target.files;
            var filesLength = files.length;
            var allowedCnt = 5;
            if (filesLength > allowedCnt) {
                $(this).replaceWith($(this).val('').clone(true));
                alert('Can not add more then ' + allowedCnt + ' files');
                return false;
            } else {

                for (var i = 0; i < filesLength; i++) {
                    var f = files[i]
                    var fileReader = new FileReader();
                    fileReader.onload = (function(e) {
                        var file = e.target;
                        $("<img></img>", {
                            class: "imageThumb",
                            src: e.target.result,
                            title: file.name
                        }).insertAfter("#files");
                    });
                    fileReader.readAsDataURL(f);
                }
            }
        });
    } else {
        alert("Your browser doesn't support to File API")
    }

再次编辑,以反映用户体验的新愿望。现在有一个带有预览或手动选择5个文件的拖放。拖放是由ajax帖子提交的,因此请查看控制台以了解结果。显示和流程需要简化,但显示了一个技术工作示例。相同的PHP代码处理这两个结果


var fd=新FormData();
$(文档).ready(函数(){
//用ajax拖拽提交
$(“#dropsubmit”)。在(“单击”上,函数(e){
$.ajax({
数据:fd,
processData:false,
contentType:false,
键入:“POST”,
成功:功能(数据){
//文件发布正常!重定向
控制台日志(数据);
}
});
})
var dropzone=$(“#dropzone”);
dropzone.on('dragenter',函数(e){
$(this.css('background','lightgreen');
});
//删除的文件,存储为formdata
dropzone.on('dragover',stopPropagate);
dropzone.on('drop',函数(e){
红玛瑙(e)
$(this.css('background','white');
var files=e.originalEvent.dataTransfer.files;
对于(var i=0;i=5)继续
}
});
玛瑙(e)的功能{
e、 停止传播();
e、 预防默认值();
} 
if(window.File&&window.FileList&&window.FileReader){
$(“输入[类型=文件]”)。关于(“更改”,函数(e){
预览(e.target.files[0])
});
}否则{
警报(“您的浏览器不支持文件API”)
}
功能预览(项目){
var fileReader=newfilereader();
fileReader.onload=(函数(e){
var file=e.target;
$("
在此处拖放文件







此代码不允许您上载超过5个文件。在这里,诀窍是重置输入类型文件,即,您只需克隆并替换以前的文件。我尝试了
此.reset
,但添加了多少文件的文本仍然保留

if (isset($_POST["submit"])) {
    $link = mysqli_connect("myhost", "myuser", "mypassw", "mybd") or die("Error " . mysqli_error($link));
    foreach (array_keys($_FILES['files']['tmp_name']) as $key) {
        //Moving file where you want.
        mysqli_query($link, "INSERT INTO tblName (fieldName) VALUES ('" . mysqli_real_escape_string($_FILES["files"]['name'][$key]) . "')");
    }
}
您必须在PHP中使用这样的代码

$(document).ready(function() {
    $('#form').on('submit', function(e) {
        var $fileUpload = $("input[type='file']");
        if (parseInt($fileUpload.get(0).files.length)>5){
            e.preventDefault();
            alert("You can only upload a maximum of 5 files");
        } else if (parseInt($fileUpload.get(0).files.length) == 0) {
            e.preventDefault();
            alert("Choose almost one file");
        }
    });
});

我希望这对您有所帮助:)

您是否确保您的apache配置包含
LoadModule rewrite\u module modules/mod\u rewrite。另请参见。您的问题是什么?我需要将图像名称存储到SQL,因为我在表单中只有一个输入框。如何将所有5个图像名称处理到PHP表单处理以将图像名称存储到SQL?您遇到了什么错误?在
var files=e.target.files,
行之后。因此,如果文件少于5个,则只应处理整个事情在upload.how i process file name as value and store in sqli不能添加多个文件是的,但单击“浏览”不能添加多个文件多次。按设计,控制器不是这样工作的。单击“浏览”一次,然后在“文件浏览器”窗口中按住CTRL键选择多个文件。我如何使其多次运行?在这种情况下,您必须使用单独的输入元素,而不是一个带有“多个”的输入元素标签。php$FILES数组将保存文件的所有实例…如果你使用桶滚动,我会给你一个向上的投票。也许。请检查上面的问题,我用这个方法添加了表单处理方法,我能做什么当我添加图像时,我看不到图像预览,我看到了图像,但无论如何,我创建了一个JSFIDDLE,我正在尝试c为所有上传到服务器上的图片创建拇指,你能帮我吗???
<html>
    <body>
        <pre><?
            print_r($_FILES); //SHOW THE ARRAY

            foreach ($_FILES as $file) {
                if (!$file['error']) {
                    //PROCESS THE FILE HERE
                    echo $file['name'];
                }
            }
        ?></pre>

        <script src="http://code.jquery.com/jquery-1.11.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">

            var fd = new FormData(); 
            $(document).ready(function() {

                //submit dragdropped by ajax
                $("#dropsubmit").on("click", function(e) {
                     $.ajax({           
                        data: fd,
                        processData: false,
                        contentType: false,
                        type: 'POST',
                        success: function(data){
                            //FILES POSTED OK! REDIRECT
                            console.log(data);
                        }
                      });
                })

                var dropzone = $("#dropzone");
                dropzone.on('dragenter', function (e) {
                    $(this).css('background', 'lightgreen');
                });

                //dropped files, store as formdata
                dropzone.on('dragover', stopPropagate);
                dropzone.on('drop', function (e) {
                    stopPropagate(e)
                    $(this).css('background', 'white');
                     var files = e.originalEvent.dataTransfer.files;

                     for (var i = 0; i < files.length; i++)  {
                        preview(files[i])
                        fd.append('file' + (i + 1), files[i]);
                        if (i >= 5) continue
                     }

                });
                function stopPropagate(e) {
                    e.stopPropagation();
                    e.preventDefault();
                } 


                if (window.File && window.FileList && window.FileReader) {
                    $("input[type=file]").on("change", function(e) {
                        preview(e.target.files[0])
                    });
                } else {
                    alert("Your browser doesn't support to File API")
                }

                function preview(item) {
                    var fileReader = new FileReader();
                    fileReader.onload = (function(e) {
                        var file = e.target;
                        $("<img></img>", {
                            class: "imageThumb",
                            src: file.result,
                            title: file.name,
                        }).appendTo("#images");
                    });
                    fileReader.readAsDataURL(item);
                }
            });
        </script>

        <div id="dropzone" style="width:100px;height:100px;border:2px dashed gray;padding:10px">Drag & Drop Files Here</div>
        <input type="button" id="dropsubmit" value="Submit dropped files" />
        <hr>
        <form method="post" enctype="multipart/form-data">
            <input id="file1" name="file1" type="file"/><br>
            <input id="file2" name="file2" type="file"/><br>
            <input id="file3" name="file3" type="file"/><br>
            <input id="file4" name="file3" type="file"/><br>
            <input id="file5" name="file3" type="file"/><br>
            <input name="submit" type="submit" value="Upload files" />
        </form><div id="images"></div>
    </body>
</html>
    if (window.File && window.FileList && window.FileReader) {
        $("#files").on("change", function(e) {
            var files = e.target.files;
            var filesLength = files.length;
            var allowedCnt = 5;
            if (filesLength > allowedCnt) {
                $(this).replaceWith($(this).val('').clone(true));
                alert('Can not add more then ' + allowedCnt + ' files');
                return false;
            } else {

                for (var i = 0; i < filesLength; i++) {
                    var f = files[i]
                    var fileReader = new FileReader();
                    fileReader.onload = (function(e) {
                        var file = e.target;
                        $("<img></img>", {
                            class: "imageThumb",
                            src: e.target.result,
                            title: file.name
                        }).insertAfter("#files");
                    });
                    fileReader.readAsDataURL(f);
                }
            }
        });
    } else {
        alert("Your browser doesn't support to File API")
    }
<form method="POST" action="" id="myform" enctype="multipart/form-data">
    <input type="file" id="files" name="files[]" multiple /><br />
    <input type="submit" name="submit" value="submit"  />
</form>
if (isset($_POST["submit"])) {
    $link = mysqli_connect("myhost", "myuser", "mypassw", "mybd") or die("Error " . mysqli_error($link));
    foreach (array_keys($_FILES['files']['tmp_name']) as $key) {
        //Moving file where you want.
        mysqli_query($link, "INSERT INTO tblName (fieldName) VALUES ('" . mysqli_real_escape_string($_FILES["files"]['name'][$key]) . "')");
    }
}
$conexion = mysqli_connect("Servername", "usernameDB", "PasswordDB", "nameDB");
if (isset($_FILES['files'])) {

    if (sizeof($_FILES['files']['tmp_name']) > 5) {
        exit("max 5 files allowed");
    }

    foreach ($_FILES['files']['error'] as $key => $value) {

        switch($value) {
            case (0):
                if (exif_imagetype($_FILES['files']['tmp_name'][$key])) {
                    $dome_dir = "imaged/uploaded/";
                    // do something with the file, for example move it.
                    move_uploaded_file($_FILES['files']['tmp_name'], $some_dir . $_FILES['name']);
                    $message = "is a image... Uploaded";
                    // take care, if the name are equals that something storaged, will overwrite the old file
                    $filename = mysqli_real_string_escape($conexion, $_FILES['files']['name'][$key]);
                    $store_image = $some_dir . $filename;
                    $sql = "INSERT INTO tablename(ID, IMAGE_ROUTE) VALUES(NULL, '$store_image')";
                    if(mysqli_query($conexion, $sql)){
                        echo 'Image ' . $_FILES['files']['name'][$key] . ' saved successful';
                    } else {
                        echo "An error has ocurred with the database saving the image";
                    }
                } else {
                    $message = "isn't a image";
                }
                break;
            case 1:
                $message = 'is too big';
                break;
            case 2: 
                $message = 'is too big';
                break;
            case 3:
                $message = "wasn't uploaded complete";
                break;
            case 4:
                $message = "wasn't uploaded";
                break;
            default:
                $message = "Error: file wasn't uploaded";
                break;
        }
        echo "The file name: " . $_FILES['files']['name'][$key] . ' ' . $message . '<br>';
    }
}
<form id="form" method="post" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple>
    <input type="submit" value="Submit">
</form>
$(document).ready(function() {
    $('#form').on('submit', function(e) {
        var $fileUpload = $("input[type='file']");
        if (parseInt($fileUpload.get(0).files.length)>5){
            e.preventDefault();
            alert("You can only upload a maximum of 5 files");
        } else if (parseInt($fileUpload.get(0).files.length) == 0) {
            e.preventDefault();
            alert("Choose almost one file");
        }
    });
});