Я использую версию jQuery сценария Fineuploader (версия 3.3).FineUploader Установите параметр для передачи как «постоянного» параметра для каждой последующей загрузки после первой успешной загрузки
Я создал необходимый сценарий загрузки, и все, кажется, работает как ожидалось, но моя цель здесь - загрузить несколько файлов в одну папку, которая динамически создается на основе идентификатора записи базы данных, который создается, когда первый файл добавления. Для этого я установил идентификатор записи папки/db в качестве возвращаемого параметра с информацией JSON, которую я возвращаю в конце моего скрипта, а затем, используя функцию on ('complete' ...), я пытаюсь установите этот параметр для возврата к моему PHP-скрипту, чтобы мой скрипт PHP не создавал новую запись БД, тем самым создавая новую папку для каждого файла.
При регистрации результатов в моей консоли JS я вижу, что это не работает, потому что кажется, что мое использование on ('complete' ...) задает параметр только после того, как последний файл завершил загрузку. Я попытался посмотреть на другие обратные вызовы, подробно описанные на http://docs.fineuploader.com/api/callbacks.html, но не нашел тот, который использует ответ JSON из моего PHP-скрипта.
Есть ли способ установить этот параметр при первой успешной загрузке и сохранить его постоянным для каждой последующей загрузки в определенной партии загрузки файлов?
Вот JS настоящее время я использую:
jQuery(document).ready(function(){
var folderID;
jQuery('#file_multi_upload').fineUploader({
request: {
endpoint: '/filehandler'
},
debug: true
}).on('complete', function(event, id, name, responseJSON){
window.folderID = responseJSON['folder_id'];
var uploadedFilePath = responseJSON['filepath'];
var oldVal = jQuery('#uploaded_files').val();
if (oldVal != '') {
jQuery('#uploaded_files').val(oldVal+" "+ uploadedFilePath);
} else {
jQuery('#uploaded_files').val(uploadedFilePath);
}
}).on('upload', function(event, id, filename){
jQuery(this).fineUploader('setParams', { 'uploadFolderId': folderID });
});
});
А вот мой PHP скрипт загрузчиком:
<?php
/*
* Template Name: File Upload Handler
*/
global $wpdb;
$result = array(
'success' => false
);
if (!empty($_FILES) && is_array($_FILES)) :
if (!isset($_POST['uploadFolderId']) || $_POST['uploadFolderId'] !== '') :
$uploadData = array(
'uploaded' => date('Y-m-d H:i:s')
);
$wpdb->insert('wp_fileuploads_rel', $uploadData);
$uploadDbEntryId = $wpdb->insert_id;
else :
$uploadDbEntryId = $_POST['uploadFolderId'];
endif;
$targetPath = ABSPATH.'wp-content/uploads/competition_uploads/'.$uploadDbEntryId.'/';
if (!is_dir($targetPath)) {
mkdir($targetPath);
}
foreach ($_FILES as $file) :
$filePath = $targetPath . basename($file['name']);
if(move_uploaded_file($file['tmp_name'], $filePath)) :
$insertData = array(
'created' => date('Y-m-d H:i:s'),
'filename' => $file['name'],
'filepath' => $filePath,
'upload_id' => $uploadDbEntryId
);
if ($wpdb->insert('wp_fileuploads', $insertData)) :
$serverPath = ABSPATH;
$siteUrl = get_site_url();
$fileUrl = str_replace($serverPath, $siteUrl .'/', $filePath);
$result = array(
'success' => true,
'filepath' => $fileUrl,
'folder_id' => $uploadDbEntryId,
'the_request' => $_POST
);
endif;
//$wpdb->update($table, $data, $where, $format = null, $where_format = null);
// echo "The file ". basename($file['tmp_name']['name'])." has been uploaded";
endif;
endforeach;
endif;
echo json_encode($result);
?>
Любая помощь с этим будет оценена.