@PressOff

Fatal error: Uncaught PHPExcel_Reader_Exception: Could not open 1 for reading! File does not exist.?

Задача загрузить эксель файл с товарами на сервер mysql силами PHP:

Вылезает ошибка:
Fatal error: Uncaught PHPExcel_Reader_Exception: Could not open 1 for reading! File does not exist. in C:\........\PHPExcel\Classes\PHPExcel\Reader\Excel2007.php:73
На русском:
Неустранимая ошибка: Uncaught PHPExcel_Reader_Exception: не удалось открыть 1 для чтения!
Файл не существует.

судя по всему я не совсем правильно передаю файл для закачки на сервер....

Тогда у меня 2 вопроса где в коде я ошибаюсь, и что конкретно нужно прописать?
Мои подозрения, что так передаю закаченный на сервер эксель файл.

Собственно вот код:

// Каталог, в который мы будем принимать файл:
$uploaddir = './uploads/';
$uploadfile = $uploaddir.basename($_FILES['upload_file']['name']);

// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['upload_file']['tmp_name'], $uploadfile))
{
    echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }

$excel = copy($_FILES['upload_file']['tmp_name'],"uploads/".basename($_FILES['upload_file']['name']));

$connection = new mysqli("localhost", "root", "", "eshop");
$connection->set_charset("utf8");

require_once './PHPExcel/Classes/PHPExcel.php';
require_once './PHPExcel/Classes/PHPExcel/IOFactory.php';
//require_once 'upload.php';


$PHPExcel_file = PHPExcel_IOFactory::load($excel);

foreach ($PHPExcel_file->getWorksheetIterator() as $worksheet) {

    $columns_str = "";
    $columns_count = PHPExcel_Cell::columnIndexFromString($worksheet->getHighestColumn());

    for ($column = 0; $column < $columns_count; $column++) {
        $columns_str .= ($columns_name_on1line ? "column" . $column : $worksheet->getCellByColumnAndRow($column, 1)->getCalculatedValue()) . ",";
    }

    $columns_str = substr($columns_str, 0, -1);

    $connection->query("DROP TABLE IF EXISTS exceltable");
    $connection->query("CREATE TABLE exceltable (" . str_replace(",", " TEXT NOT NULL,", $columns_str) . " TEXT NOT NULL)");

    $rows_count = $worksheet->getHighestRow();

    for ($row = 1; $row <= $rows_count; $row++) {
        $value_str = "";

        for ($column = 0; $column < $columns_count; $column++) {

            $merged_value = "";
            $cell = $worksheet->getCellByColumnAndRow($column, $row);

            foreach ($worksheet->getMergeCells() as $mergedCells) {
                if ($cell->isInRange($mergedCells)) {

                    $merged_value = $worksheet->getCell(explode(":", $mergedCells)[0])->getCalculatedValue();
                    break;
                }
            }

            $value_str .= "'" . (strlen($merged_value) == 0 ? $cell->getCalculatedValue() : $merged_value) . "',";
        }

        $value_str = substr($value_str, 0, -1);

        $connection->query("INSERT INTO exceltable (" . $columns_str . ") VALUES (" . $value_str . ")");
    }
}
  • Вопрос задан
  • 472 просмотра
Пригласить эксперта
Ответы на вопрос 1
akubintsev
@akubintsev
Опытный backend разработчик
Тут явно ошибка
$excel = copy($_FILES['upload_file']['tmp_name'],"uploads/".basename($_FILES['upload_file']['name']));

Смотрите https://www.php.net/manual/ru/function.move-upload...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы