PHP-文件上传问题(index.php-> custom.js-> function.php)

时间:2019-12-17 17:37:07

标签: javascript php file-upload

嗨,大家好! 我的wordpress插件存在问题。我试图通过表格上传文件。 问题是我无法将type =“ file”存储在数据库中。 我还有其他一些功能,可以将诸如文本之类的值放入数据库中而没有任何问题。

我不知道即时消息是否应该更改custom.js函数文件或该怎么做...

你们能帮我吗?

thx帮助。

这是我的Index.php

<form id="frmCreateFile" class="form-horizontal" action="javascript:void(0)" method="post" 
                enctype="multipart/form-data">
                Select Image File to Upload:
                <input id="file" type="file" name="file">
                <input type="submit" name="submit" value="Upload">
            </form>

这是我的Custom.js

jQuery("#frmCreateFile").validate({
        submitHandler:function(){
            var postdata = jQuery("#frmCreateFile").serialize()+"&action=crm_request&param=create_file";
            jQuery.post(crm_ajax_url, postdata, function(response){
                var data = jQuery.parseJSON(response);
                location.reload();
            })
        }
    });

这是我的Function.php

global $wpdb;
$param = isset($_REQUEST['param']) ? $_REQUEST['param'] : "";

if(!empty($param) && $param=='create_file'){

    $customerId = '358';

    // File upload path
    $targetDir = VEOSOFT_CRM_DIR . "/uploads/";
    echo $targetDir;
    $fileName = basename($_FILES["file"]["name"]);
    $targetFilePath = $targetDir . $fileName;
    $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

    if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){

        // Allow certain file formats
        $allowTypes = array('jpg','png','jpeg','gif','pdf');
        if(in_array($fileType, $allowTypes)){
            // Upload file to server
            if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
                // Insert image file name into database
                $insert = $wpdb->query("INSERT into wpwh_veosoft_crm_file (fileName, uploadDate, customer_Id) VALUES ('".$fileName."', NOW(),$customerId)");
                if($insert){

                    $statusMsg = "The file ".$fileName. " has been uploaded successfully.";
                }else{
                    $statusMsg = "File upload failed, please try again.";
                } 
            }else{
                $statusMsg = "Sorry, there was an error uploading your file.";
            }
        }else{
            $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
        }
    }else{
        $statusMsg = 'Please select a file to upload.';
    }
}

点击提交后,我的数据库将在我的表中插入具有以下值的新行:

Id = 51
FileName = (empty)
Date = 2019-12-17

1 个答案:

答案 0 :(得分:0)

您不能使用常规Ajax或键值对上传文件。使用多部分数据上传文件。

请尝试使用Javascript

jQuery("#frmCreateFile").validate({
        submitHandler:function(){
            var fd = new FormData();
            var files = $('#file')[0].files[0];
            fd.append('file',files);


          $.ajax({
            url: crm_ajax_url,
            type: 'post',
            data: fd+"&action=crm_request&param=create_file",
            contentType: false,
            processData: false,
            success: function(response){
                if(response != 0){
                    $("#img").attr("src",response); 
                    $(".preview img").show(); // Display image element
                }else{
                    alert('file not uploaded');
                }
            }
          });
        }
    });