Я новичок в Freebsd / nginx, поэтому подобные QAs мне не помогли (у меня был код:
$ext = pathinfo ($_FILES['rawexcel']['name'][$i], PATHINFO_EXTENSION); //get extension of file, run different converters depending on extension if ($ext == 'xlsx' ) { exec("/usr/local/bin/cnvt /var/tmp/xls/result.xlsx /var/tmp/result.csv "); } else if ($ext == 'xls' ) { exec("/usr/local/bin/xls2csv -x /var/tmp/xls/result.xls* -b WINDOWS-1251 -c /var/tmp/result.csv -a UTF-8"); } /var/tmp/xls/
когда мои имена файлов были постоянными (result.xls, которые затем преобразовывались в result.csv), и я обрабатывал файлы один за другим; cnvt и xls2csv являются преобразователями. Теперь у меня есть загрузка ajax и вы хотите выполнить команду exec для всех файлов в папке, сохраняя исходное имя файла. Я попытался запустить тот же код с result.xls, который был заменен на * (звездочка), но это не сработало.
что у меня есть:
папка tmp / xls с файлами excel
что я хочу:
конвертировать все файлы inna в файлы inna в .csv, сохраняя свои исходные имена. Поблагодарите любую помощь.
UPDATE: лучший способ выполнить команду для всех файлов в каталоге, чтобы создать / отредактировать скрипт, чтобы сделать это, работая со всеми файлами в каталоге намного проще в bash. Удачи.
Посмотрите, как вы извлекли расширение …
$ ext = pathinfo ($ _FILES ['rawexcel'] ['name'] [$ i], PATHINFO_EXTENSION);
Вы можете проверить документы pathinfo, и вы увидите, как получить имя файла без пути или расширения:
$filename = pathinfo($_FILES['rawexcel']['names'][$i], PATHINFO_FILENAME);
Тогда вы можете использовать это …
if ($ext == 'xlsx' ) { exec("/usr/local/bin/cnvt /var/tmp/xls/$filename.xlsx /var/tmp/$filename.csv "); } else if ($ext == 'xls' ) { exec("/usr/local/bin/xls2csv -x /var/tmp/xls/$filename.xls -b WINDOWS-1251 -c /var/tmp/$filename.csv -a UTF-8"); }