Как загрузить таблицу PHP и работать с ней через путь к файлу AJAX?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как загрузить таблицу PHP и работать с ней через путь к файлу AJAX?

Сообщение Anonymous »

Я пытаюсь передать путь к файлу и имя листа через запрос AJAX в свой PHP-скрипт. AJAX работает, и это многоэтапная файловая операция: загрузка файла, чтение вкладок листа, которые через AJAX возвращаются в меню в DOM, и [надеюсь, следующие] последующие операции с файлами.
Все это есть выполняется в разных PHP-скриптах посредством разных запросов AJAX.

Код: Выделить всё

$inputfilepath = $_POST['dbgetpath'];
$filevar = './' . substr($inputfilepath, strrpos($inputfilepath, '\\' ) +1 ) . "\n" ; // outputs a string
$selectsheet = $_POST['sheetselect'];

echo $filevar . " " .  gettype($filevar) . " "  . $selectsheet;   // for debugging

// Load PhpSpreadsheet library.
require_once('vendor/autoload.php');

// Import classes.
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\IOFactory;

// Read the Excel file.
$reader = IOFactory::createReader("Xlsx");
$reader->setReadDataOnly(true);
$reader->setLoadSheetsOnly($selectsheet);
$spreadsheet = $reader->load($filevar, FILE_SKIP_EMPTY_LINES);

// Export to CSV file.
$writer = IOFactory::createWriter($spreadsheet, "Csv");
$writer->setDelimiter(',');  // Set delimiter.

$fileproc = substr($filevar,0,-5); //remove extension from name string
$filename = $fileproc . ".csv";
$writer->save($filename); // save output

Код: Выделить всё

$('#csvSend').on('click', function() {
var dbgetpath = document.getElementById("fileselect").value; // this is reporting a "fake" path from the C drive
var sheetselect = document.getElementById("selectSheet").value;
$.ajax({
url:"compiler.php",
dataType: 'text',
method:"POST",
data: {dbgetpath:dbgetpath, sheetselect:sheetselect},
success: function(scop_response){

var dbresult = scop_response;
document.getElementById('subcon3').innerHTML = "Result: " + dbresult;
console.log(dbresult);
}
});
});
Я проверил имена переменных четыре раза. Я попытался изменить путь к файлу, полученный с помощью метода POST, добавив к нему косую черту и "./". Я также использовал gettype, чтобы убедиться, что оба аргумента (путь к файлу и имя листа) являются строками.
Если я закомментирую весь раздел электронной таблицы PHP после эха, скрипт сработает и выведет строку как следует:
"Результат: ./myexceldoc.xlsx строка Sheet1 string."
Я ожидал, что PHPspreadsheet выдаст файл .csv с тем же именем, что и исходный .xlsx, но все, что я получаю, это журнал в консоли (с использованием версии Firefox Dev) для запроса и без вывода.
Когда я блокирую комментарий к части таблицы PHP, эхо работает правильно, и AJAX Функция Internalhtml обновляет DOM.
Когда я раскомментирую часть таблицы PHPspreadsheet, DOM перестает обновляться, но эхо все равно работает. Если я открою консоль и перейду к POST, то для «ответа» строка все равно будет найдена там.
Однако файл .csv не создается, и я понятия не имею, почему средство записи файлов, по-видимому, делает абсолютно ничего.

Подробнее здесь: https://stackoverflow.com/questions/791 ... x-filepath
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»