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: </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.