admin / 11.06.2018
Нет.
Тип контента должен быть тем, кем он известен, если вы его знаете. определяется как «произвольные двоичные данные» в RFC 2046, и существует определенное перекрытие здесь, когда оно подходит для объектов, единственная цель которых должна быть сохранена на диске, и с этой точки не должно быть ничего «webby», , Или смотреть на него с другого направления; единственное, что можно безопасно делать с приложением / октетом-потоком — это сохранить его в файл и надеяться, что кто-то еще знает, для чего он нужен.
Вы можете комбинировать использование с другими типами контента, такими как или даже , чтобы указать, что вы хотите сохранить, а не отображать. Раньше было так, что некоторые браузеры игнорировали бы его в случае , но я думаю, что это было довольно давно на этом месте (и я скоро буду спать, поэтому я не собираюсь начинать тестирование весь кучу браузеров прямо сейчас, может быть, позже).
RFC 2616 также упоминает о возможности токенов расширения, и в настоящее время большинство браузеров распознают , что означает, что вы хотите, чтобы объект отображался, если это возможно (то есть, если это тип, браузер знает, как отображать, в противном случае он нет выбора в этом вопросе). Это, конечно же, поведение по умолчанию в любом случае, но это означает, что вы можете включить часть заголовка, которые будут использовать браузеры (возможно, с некоторой настройкой, так что расширения файлов соответствуют локальным системным нормам для рассматриваемого типа контента, возможно, нет) в качестве предложения, если пользователь пытается сохранить.
Следовательно:
означает «Я не знаю, что это, черт возьми, это. Сохраните его как файл, желательно с именем picture.png».
Значит «Это изображение PNG. Сохраните его как файл, желательно с именем picture.png».
Значит «Это изображение PNG. Пожалуйста, покажите его, если вы не знаете, как показывать изображения PNG. В противном случае, или если пользователь захочет сохранить его, мы рекомендуем имя picture.png для файла, который вы его сохранили как».
Из тех браузеров, которые распознают , некоторые из них всегда будут использовать его, а другие будут использовать его, если пользователь выбрал «сохранить ссылку как», но не если они выбрали «сохранить» во время просмотра (или, по крайней мере, IE использовали чтобы быть таким, возможно, это изменилось несколько лет назад).
Содержание
В статье приведен пример формы и php скрипта для безопасной загрузки файлов на сервер, метод отправки файлов через AJAX, возможные ошибки и рекомендации при работе с данной темой.
Пример формы:
Форма отправит файл только методом POST и с атрибутом enctype="multipart/form-data".
Форма для загрузки сразу нескольких файлов:
Файл upload.php:
Файлы можно отправить без перезагрузки страницы с помощью jQuery Form Plugin.
Как это работает:
Для работы с cURL, в PHP есть библиотека , при помощи которой можно скачивать файлы с удаленных серверов.
Проще всего написать функцию и использовать ее для скачивания изображений, архивов и других файлов. Нам понадобится работающая библиотека и опция опция .
<?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); } ?>
Если Вам необходимо правильно отдавать файл для загрузки пользователю для всех современных браузеров, то данный пример поможет Вам в этом.
Для начала проверим размер файла:
Данная функция принимает один параметр — ссылку на удаленный файл (который может находиться на другом сервере или внутри данного сервера).
Например, её можно использовать так:
Итог. Если файл имеет размер, больший 0, то мы отдаем его для скачивания браузеру. При этом, любой файл будет отдаваться для загрузки, а не открываться в браузере, например видео или текстовый файл.
Возможно, этот файл (15 KB) даст больше информации…
Используя функцию получения размера файла, мы также получаем некоторые данные о файле, а именно:
Результат:
Получив данный массив, мы можем вывести пользователю дату изменения файла:
После чего, мы можем вывести пользователю данные таким образом:
Функция получения типа файла по ссылке:
Использовать так:
Получение базового имени файла по ссылке:
Например:
Выведет:
Получится что-то типа такого:
FILED UNDER : IT