duanjue9296 2017-06-22 06:32
浏览 80
已采纳

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

I am developing custom WordPress plugin. In this plugin, I am trying to upload files into wp-content\uploads\passports (folder path).
I don't face any error message when uploading file. Although it shows File has been uploaded successfully. message, but there is no any uploaded file in the folder.
Here is my code:

trip-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);
?>

I have no idea what is wrong. Any help would be appreciated.
Thanks.

  • 写回答

1条回答 默认 最新

  • duanqie5741 2017-06-22 06:40
    关注

    Can you please change your uploads folder permission. Make it 755.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流