Я работаю над системой комплектации для своих приложений, где пользователь может загрузить сжатый zip-файл со следующей структурой:
name_of_file.zip
src/
file.jar
thumbnail.png
meta.json
Я хотел бы проверить эту структуру после извлечения с помощью PHP. После проверки структуры я перенесу thumbnail.png и /src/source.jar на свой сервер. Я также буду анализировать meta.json и возвращать данные из него.
Итак, вот как выглядит мой класс ($ this-> archive — это экземпляр ZipArchive):
/**
* Process and parse a bundle.
*
* @param \UploadedFile $zip
* @param array $paths
*
* @return boolean
*/
private function bundle($zip, array $paths)
{
$status = $this->archive->open($zip->getRealPath());
if($status === false)
return false;
// Before getting here I need to verify the files exist...
$this->archive->extractTo($paths['software'], ['src/file.jar']);
$this->archive->extractTo($paths['thumbnail'], ['thumbnail.png']);
// Cool, files moved now read the meta.json file...
}
и если вы уже догадались, это Laravel.
Я только хочу проверить структуру прямо сейчас. Как только я закончу со структурой, мне нужно будет сделать несколько простых проверок файлов (несколько советов по получению расширений файлов?).
В конце всего этого, file.jar и thumbnail.png будут перемещены в их местоположения, и meta.json будет проанализирован и данные из него возвращены (файл не будет перемещен).
Получение расширения загруженного файла
$extension = Input::file('photo')->getClientOriginalExtension();
Источник: http://laravel.com/docs/4.2/requests
Или же
$path = $_FILES['image']['name'];
$ext = pathinfo($path, PATHINFO_EXTENSION);
Источник: Как получить расширение файла в PHP?
Других решений пока нет …