无法通过自定义WordPress插件上传文件

时间:2017-06-22 06:32:26

标签: php jquery ajax wordpress

我正在开发自定义WordPress插件。在这个插件中,我试图将文件上传到wp-content \ uploads \ passports(文件夹路径) 上传文件时我没有遇到任何错误消息。虽然它显示文件已成功上传。消息,但文件夹中没有任何上传的文件。
这是我的代码:

跳闸form.php的

<tr><td cospan="4">Please attach a scanned copy of your:</td></tr> 
<tr>
  <td>Passport:&nbsp;</td>
  <td colspan="3"><input type="file" name="passport" id="passport"/></td>
</tr>
<tr>
    <td></td>
    <td colspan="3"><div id="dropBox">
        <p>Select file to upload</p>
    </div></td>
</tr>

的script.js

// Add events
$j('input[type=file]').on('change', fileUpload);

// File uploader function
function fileUpload(event){
    alert('fileUpload');
    //notify user about the file upload status
    $j("#dropBox").html(event.target.value+" uploading...");

    //get selected file
    files = event.target.files;

    //form data check the above bullet for what it is  
    var data = new FormData();         

    var web_url = document.location + '';
    var path = web_url.substring(0,web_url.lastIndexOf('/'));

    path = path.substring(0,path.lastIndexOf('/'));
    path = path + '/wp-content/plugins/trip-form/pages/uploadfile.php';     

    //file data is presented as an array
    for (var i = 0; i < files.length; i++) {
        var file = files[i];

        var fileExtension = ['jpeg', 'jpg', 'pdf'];
        if ($j.inArray($j('#passport').val().split('.').pop().toLowerCase(), fileExtension) == -1) {
            $j("#dropBox").html("Only formats are allowed : "+fileExtension.join(', '));
        }else{
            //append the uploadable file to FormData object
            data.append('file', file, file.name);

            //create a new XMLHttpRequest
            var xhr = new XMLHttpRequest();     

            //post file data for upload
            xhr.open('POST', path, true);  
            xhr.send(data);
            xhr.onload = function () {
                //get response and show the uploading status
                var response = JSON.parse(xhr.responseText);
                if(xhr.status === 200 && response.status == 'ok'){
                    $j("#dropBox").html("File has been uploaded successfully.");
                }else{
                    $j("#dropBox").html("Some problem occured, please try again.");
                }
            };
        }
    }
}

uploadfile.php

<?php
    $parse_uri = explode( 'wp-content', $_SERVER['SCRIPT_FILENAME'] );
    require_once( $parse_uri[0] . 'wp-load.php' );


    //generate unique file name
    $fileName = time().'_'.basename($_FILES["file"]["name"]);

    //file upload path, targetdir is correct
    $targetDir = "../../../uploads/passports/";
    $targetFilePath = $targetDir . $fileName;

    //upload file to server
    if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){
    //if (file_exists ( $targetDir."testing.txt" )){
        $response['status'] = 'ok';
    }else{
        $response['status'] = 'err';
    }

    //render response data in JSON format
    echo json_encode($response);
?>

我不知道出了什么问题。任何帮助将不胜感激 感谢。

1 个答案:

答案 0 :(得分:0)

是否可以更改您的上传文件夹权限。把它变成755.