admin / 11.06.2018

Application octet stream

Нет.

Тип контента должен быть тем, кем он известен, если вы его знаете. определяется как «произвольные двоичные данные» в RFC 2046, и существует определенное перекрытие здесь, когда оно подходит для объектов, единственная цель которых должна быть сохранена на диске, и с этой точки не должно быть ничего «webby», , Или смотреть на него с другого направления; единственное, что можно безопасно делать с приложением / октетом-потоком — это сохранить его в файл и надеяться, что кто-то еще знает, для чего он нужен.

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

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

Следовательно:

означает «Я не знаю, что это, черт возьми, это. Сохраните его как файл, желательно с именем picture.png».

Значит «Это изображение PNG. Сохраните его как файл, желательно с именем picture.png».

Значит «Это изображение PNG. Пожалуйста, покажите его, если вы не знаете, как показывать изображения PNG. В противном случае, или если пользователь захочет сохранить его, мы рекомендуем имя picture.png для файла, который вы его сохранили как».

Из тех браузеров, которые распознают , некоторые из них всегда будут использовать его, а другие будут использовать его, если пользователь выбрал «сохранить ссылку как», но не если они выбрали «сохранить» во время просмотра (или, по крайней мере, IE использовали чтобы быть таким, возможно, это изменилось несколько лет назад).

Open MIME Application/Octet-Stream

В статье приведен пример формы и php скрипта для безопасной загрузки файлов на сервер, метод отправки файлов через AJAX, возможные ошибки и рекомендации при работе с данной темой.

Пример формы:

Форма отправит файл только методом POST и с атрибутом enctype="multipart/form-data".

Форма для загрузки сразу нескольких файлов:

Файл upload.php:

  • Поддерживает как одиночную загрузку файла так и множественную (multiple) без изменения кода.
  • Проверка на все возможные ошибки которые могут возникнуть при загрузке файлов.
  • Имена файлов переводятся в транслит и удаляются символы которые будут в дальнейшем мешать вывести их на сайте.
  • Есть возможность указать разрешенные и запрещенные для загрузки расширения файлов.

Загрузка файлов через AJAX

Файлы можно отправить без перезагрузки страницы с помощью jQuery Form Plugin.

Как это работает:

  1. На поле выбора файла с id="js-file" повешено jquery событие change.
  2. При выборе файла срабатывает событие и выполняется метод плагина ajaxSubmit, он все поля из формы с id="js-form" включая выбранный файл отправляет на uploads.php.
  3. Далее то что отдаст uploads.php выведется в <div id="result">…</div>.
  4. После завершения, форма очищается методом reset() т.к. input file останется с выбранным файлом.

Возможные проблемы

  • На unix хостингах php функция move_uploaded_file() не будут перемещать файлы в директорию если у нее права меньше 777.
  • Загрузка файлов может быть отключена в настройках PHP директивой file_uploads.
  • Не загружаются файлы большого размера, причина в ограничениях хостинга.
    Посмотрите в phpinfo() значения директив:
    • upload_max_filesize – максимальный размер закачиваемого файла.
    • max_file_uploads – максимальное количество одновременно закачиваемых файлов.
    • post_max_size – максимально допустимый размер данных, отправляемых методом POST, его значение должно быть больше upload_max_filesize.
    • memory_limit – значение должно быть больше чем post_max_size.

Нужен ли мне Content-Type: application / octet-stream для загрузки файла?

cURL

Для работы с cURL, в PHP есть библиотека , при помощи которой можно скачивать файлы с удаленных серверов.

Проще всего написать функцию и использовать ее для скачивания изображений, архивов и других файлов. Нам понадобится работающая библиотека и опция опция .

Функция curl_download()

<?php /** * Функция скачивания удаленного файла на сервер * void curl_download(string $url, string $file) * * @param string url — путь к удаленному файлу * @param string file — путь к локальному файлу (в него записываем файл) * * @return void * */ function curl_download($url, $file) { // открываем файл, на сервере, на запись $dest_file = @fopen($file, "w"); // открываем cURL-сессию $resource = curl_init(); // устанавливаем опцию удаленного файла curl_setopt($resource, CURLOPT_URL, $url); // устанавливаем место на сервере, куда будет скопирован удаленной файл curl_setopt($resource, CURLOPT_FILE, $dest_file); // заголовки нам не нужны curl_setopt($resource, CURLOPT_HEADER, 0); // выполняем операцию curl_exec($resource); // закрываем cURL-сессию curl_close($resource); // закрываем файл fclose($dest_file); } ?>

Список MIME-типов

Если Вам необходимо правильно отдавать файл для загрузки пользователю для всех современных браузеров, то данный пример поможет Вам в этом.

1 Шаг.

Для начала проверим размер файла:

Данная функция принимает один параметр — ссылку на удаленный файл (который может находиться на другом сервере или внутри данного сервера).

Например, её можно использовать так:

2 Шаг.

Итог. Если файл имеет размер, больший 0, то мы отдаем его для скачивания браузеру. При этом, любой файл будет отдаваться для загрузки, а не открываться в браузере, например видео или текстовый файл.

Возможно, этот файл (15 KB) даст больше информации…

Используя функцию получения размера файла, мы также получаем некоторые данные о файле, а именно:

Результат:

Получив данный массив, мы можем вывести пользователю дату изменения файла:

После чего, мы можем вывести пользователю данные таким образом:

Функция получения типа файла по ссылке:

Использовать так:

Получение базового имени файла по ссылке:

Например:

Выведет:

Получится что-то типа такого:

FILED UNDER : IT

Submit a Comment

Must be required * marked fields.

:*
:*