将图片从上传文件夹插入db

时间:2018-06-25 22:31:11

标签: javascript php mysql

我创建了一个表单,该表单可以从用户上传图像并将其存储到我现在创建的文件夹中,我想也将图像插入到mysql db中,然后也将其提取并显示在表中

    function bs_input_file() {
        $(".input-file").before(
                function () {
                    if (!$(this).prev().hasClass('input-ghost')) {
                        var element = $("<input type='file' class='input-ghost' accept='image/jpg,image/jpeg,image/png,image/gif' style='visibility:hidden; height:0'>");
                        element.attr("name", $(this).attr("name"));
                        element.change(function () {
                            element.next(element).find('input').val((element.val()).split('\\').pop());
                        });
                        $(this).find("button.btn-choose").click(function () {
                            element.click();
                        });
                        $(this).find("button.btn-reset").click(function () {
                            element.val(null);
                            $(this).parents(".input-file").find('input').val('');
                        });
                        $(this).find('input').css("cursor", "pointer");
                        $(this).find('input').mousedown(function () {
                            $(this).parents('.input-file').prev().click();
                            return false;
                        });
                        return element;
                    }
                }
        );
    }
    
    function generateAlert(type, message){
        new PNotify({
            text: message,
            type: type,
            title: type,
            hide: true,
            buttons: {
                closer_hover: false,
                sticker: false
            },
            mobile: {
                swipe_dismiss: true,
                styling: true
            }
        });
    }
    
    $(function () {
        bs_input_file();
        
        //upload file code starts here
        $("body").on("click", ".uploadfilebutton", function(e){
            e.preventDefault();
            if ($('.input-ghost').get(0).files.length === 0) {
                alert("No file selected.");
            }
            
            var formData = new FormData();
            formData.append('upload', 'fileupload');
            // Attach file
            formData.append('image', $('.input-ghost')[0].files[0]);
            
            $.ajax({
                url: 'upload.php',
                data: formData,
                type: 'POST',
                contentType: false, 
                processData: false, 
                // ... Other options like success and etc
                beforeSend: function(data, xhr){
                    $('.loader').removeClass("hide");
                },
                success: function(response, status, xhr){
                    var type;
                    if(xhr.status === 200 || xhr.status === '200'){
                        type = "success";
                        $('#Pic').val('');
                    }else{
                        type = "error";
                    }
                    generateAlert(response, type);
                },
                error: function(response, status, xhr){
                    generateAlert("Some Error Occured while uploading file", "error");
                },
                complete: function(response, status, xhr){
                    $('.loader').addClass("hide");
                },
            });
        });
       
    });
我已成功上传图像,并且图像已显示在文件夹中,但我也想将该图像插入到mysql表中

2 个答案:

答案 0 :(得分:0)

我将使用它来捕获文件名并将其存储在数据库中,因为它比存储实际图像要有效得多。

$image = ($_FILES['testimage']['name']);

然后,您要做的就是将其作为变量检索,然后引用您将其存储在服务器上的位置。例如

<img src="images/<?php echo $Image->testimage; ?>

如果您想将实际图像存储在数据库中,则需要将其存储为Blob类型,但是由于图像文件的大小,这种方法不是最佳实践。

答案 1 :(得分:0)

您可以使用file_get_contents获取文件内容,然后将其插入数据库。 $content = file_get_contents($path);

    if ($conn = mysqli_connect('localhost', 'root', 'root', 'test')) {
        $content = mysqli_real_escape_string($conn, $content);
        $sql = "insert into images (name, size, type, content) values ('{$name}', '{$size}', '{$type}', '{$content}')";
    if (mysqli_query($conn, $sql)) {
                $uploadOk = true;
                $imageId = mysqli_insert_id($conn);
            } else {
                echo "Error: Could not save the data to mysql database. Please try 
               again.";
             }
            }