Может ли PHP читать метафайлы? - PullRequest
0 голосов
/ 08 января 2020

Я построил парсальную загрузку в PHP и на стороне клиента Javascript.

Поток

  1. Преобразование файла в base64, чтобы я получил строку base64
  2. Разбейте строку base64 на несколько частей
  3. Разместите каждый фрагмент и позицию для загрузки обработчика
  4. Обработчик загрузки создает данные публикации в виде одного файла в одной папке
  5. Если итерация остановится, JS скажет обработчику загрузки создать код
  6. Затем обработчик загрузки сделает все файлы одним файлом, а затем декодирует base64 в новый файл
  7. Оригинальный размер
  8. Оригинальное расширение

Интересно, может PHP прочитать информацию о файле?

Я ожидаю, что некоторые функции, подобные этой (не фактическая функция)

$file  = read_the_file('/path/to/file');
$metas = read_meta_file($file);

, а затем вы можете получить тип файла и некоторые другие данные.

Примечание

В настоящее время я работаю с файлом видео.

Ответы [ 3 ]

0 голосов
/ 08 января 2020

Но вам нужно где-то хранить это расширение - в видеофайлах, например, в тегах ID3 (и использовать lib https://github.com/JamesHeinrich/getID3/ для его извлечения). Скорее всего, это НЕ то, что вы хотите сделать, так как вам нужно отредактировать файл во внешнем интерфейсе.

Другой вариант - использовать mime_content_type (после завершения загрузки файла) - для "mp4" файл, даже без расширения, он выдаст вам "video / mp4", для mkv "video / x-matroska". Et c. на основе MIME-типа вы можете снова создать расширение - например:

$exts = [
"video/x-matroska" => "mkv",
"video/mp4" => "mp4"
];

, а затем:

$extension = $exts[mime_content_type("..path..to..file")];

(конечно, сначала с проверкой, существует ли запись там).

Само расширение НЕ хранится в каких-либо метаданных, поэтому вы не можете просто извлечь его.

Имея тип mime, вы также можете использовать любые популярные библиотеки - например: https://github.com/ralouphie/mimey

для преобразования mime-типа в расширение.

Чтобы получить размер файла, лучше всего просто использовать функцию размера файла.

Другой можно было бы просто отправить исходное имя файла с последним сообщением (которое сообщает бэкэнду, что файл завершен): вероятно, самое надежное.

0 голосов
/ 08 января 2020
  1. Вы можете получить информацию о файле с помощью функции php с именем pathinfo

    • Как использовать pathinfo : print_r(pathinfo("/path_of_file/123.txt")); Вернется ..... Array ( [dirname] => /path_of_file [basename] => 123.txt [extension] => txt )

2. Вы можете получить размер файла с помощью функции php с именем размер файла

  • Как использовать размер файла : echo filesize("123.txt"); Он вернет размер файла в байтах.
I hope, This will help you.
Good Luck.
0 голосов
/ 08 января 2020

Вы можете использовать pathinfo php function
Для размера файла вы можете использовать filesize function

Чтобы получить расширение из base_64, вы можете использовать finfo_buffer функция

echo finfo_buffer(finfo_open(), $base64, FILEINFO_MIME_TYPE);    
...