3

Hi am using PhpSpreadsheet, and here is my code:

switch ($file_extension) {
      case 'xlsx':
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        break;
      case 'xls':
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls();
        break;
      default:
        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
        break;
  }
  $spreadsheet = $reader->load($_FILES['file']['tmp_name']);

Now I am uploading excelsheet using Ajax, from two source -

  1. From Local Device: var fileName = $(this).find('input[type=file]').prop('files')[0]; //with tmp_name = C:\xampp\tmp\php742D.tmp
  2. From Google Drive: var fileName = new File([res.body], doc.name, { type: doc.mimeType }) //with tmp_name = C:\xampp\tmp\php1F2A.tmp

So, when my php code executing $spreadsheet = $reader->load($_FILES['file']['tmp_name']) this line giving fatal error:


Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Reader\Exception: Could not find zip member zip://C:\xampp\tmp\php2854.tmp#_rels/.rels in C:\xampp\htdocs\myWebapp\GET-OCR\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Shared\File.php:159 Stack trace: #0 C:\xampp\htdocs\myWebapp\GET-OCR\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Reader\Xlsx.php(393): PhpOffice\PhpSpreadsheet\Shared\File::assertFile('C:\xampp\tmp\ph...', '_rels/.rels') #1 C:\xampp\htdocs\myWebapp\GET-OCR\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Reader\BaseReader.php(166): PhpOffice\PhpSpreadsheet\Reader\Xlsx->loadSpreadsheetFromFile('C:\xampp\tmp\ph...') #2 C:\xampp\htdocs\myWebapp\GET-OCR\controller\ajax-req.php(81): PhpOffice\PhpSpreadsheet\Reader\BaseReader->load('C:\xampp\tmp\ph...') #3 {main} thrown in C:\xampp\htdocs\myWebapp\GET-OCR\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Shared\File.php on line 159

I checked https://stackoverflow.com/a/50476471/3340665 & PhpSpreadsheet: Permissions | ZipArchive::close(): Failure to create temporary file But no help.

VIKESIR
  • 225
  • 2
  • 9
  • 1
    This happened to me, the key here is to really know the filetype, I suggest to: – Alcides Jan 11 '23 at 04:46
  • - open the file that you want to process first with a software like Excel - if the file is actually opening, check the file permissions - to get the type don't look the extension, look for the mimetype with a function like $file->getClientMimeType(); here https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types you can find the common types, in this case: application/vnd.ms-excel for .xls application/vnd.openxmlformats-officedocument.spreadsheetml.sheet for .xlsx text/csv for .csv "Could not find zip member" means that the file can't be processed/read – Alcides Jan 11 '23 at 04:55
  • 1
    For uncertain filetype, I always use following as [doc](https://phpspreadsheet.readthedocs.io/en/latest/topics/reading-files/#creating-a-reader-and-loading-a-spreadsheet-file) suggested : `**$inputFileType = \PhpOffice\PhpSpreadsheet\IOFactory::identify($inputFileName);**` > `**$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);**` > `**$spreadsheet = $reader->load($inputFileName);**` – Zeikman Feb 07 '23 at 07:37

0 Answers0