|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
Как отправить пользователю файл, находящийся не в корневом к22.12.2011, 02:23. Показов 2501. Ответов 13
Метки нет (Все метки)
Корневой каталог у меня C:Apachehtdocs, а файл находится в папке C
ocuments Как отправить пользователю данный файл?
0
|
|
| 22.12.2011, 02:23 | |
|
Ответы с готовыми решениями:
13
Отправить html-файл определённому пользователю
Как редактировать файл, находящийся в облаке OneDrive программно? |
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 22.12.2011, 10:29 | |
|
А в чем сложность? Указываешь полный путь к файлу и отдаешь его юзеру той же функцией readfile, например.
0
|
|
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
| 22.12.2011, 12:24 [ТС] | |
|
В том что у меня не обычный htm файл, который должен быть записан в браузер, а mp3 файл. Пользователю чначала должна быть выведена табличка о скачивании, а потом уже и отправить этот файл.
0
|
|
|
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
|
|
| 22.12.2011, 12:39 | |
|
Ну так и выведи пользователю сначала табличку, потом подсунь ссылку на файл.
0
|
|
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
| 22.12.2011, 12:51 [ТС] | |
|
В том то и дело, что сам файл лежит не в корневом каталоге. То что лежит в папке C:Apachehtdocs видно как http://server, а то что лежит в папке C
ocuments с внешней стороны не видно. PHP должен отправить пользователю запрос на скчивание, а потом отправить сам файл.
0
|
|
|
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
|
|
| 22.12.2011, 13:13 | |
|
No comments...
1. Копируешь файл в то место, откуда он виден с внешней стороны, даешь ссылку, после скачки удаляешь файл. 2. Выводишь файл бинарным потоком.
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
|
| 22.12.2011, 13:18 | |
|
Тут возможно несколько вариантов.
1) Подключить папку C ocuments как ссылку с помощью директивы Alias. Тогда можно будет ставить прямые ссылки на эти файлы так как будто они хранятся внутри htdocs.2) Вывести ссылки на нужные файлы из каталога C ocuments. В качестве id файла используем хеш md5. Файл обрабатывающий запрос на скачивание находит нужный файл, выдает заголовкиheader("Content-type: application/octet-stream"); // или audio/mpeg header("Content-Disposition: attachment; filename=".$friendlyFileName); readfile($fullFileName) Пользователь получит запрос на скачивание, выберет что сделать с файлом и закачка выполнится. На сайте php в описании функции readfile приведен пример использования заголовка content-type: application/force-download. Человек утверждает что это заставляет браузер всегда качать файл, а не открывать его автоматически. Не знаю работает ли это на самом деле, но может тебе будет интересно попробовать.
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
||
| 22.12.2011, 13:35 | ||
0
|
||
|
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
|
|
| 22.12.2011, 13:55 | |
|
Как вариант, реализовать аналог сборщика мусора, учитывая время запроса файла. Вызов сборщика может осуществлятся либо по системному таймеру, либо каждый раз при запросе скрипта.
0
|
|
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
||
| 22.12.2011, 14:01 [ТС] | ||
|
копирование - хорошо, но это если качает 1-3 пользователя, а если таких пользователей более 10-ти? Вы представляете что будет с винтом, с компом и вообще?
а данный код - замечательно работает. Если вы мне подскажите еще как здесь организовать возможность докачки - вообще супер будет
0
|
||
|
3 / 3 / 0
Регистрация: 02.01.2011
Сообщений: 149
|
|
| 22.12.2011, 14:02 [ТС] | |
|
да, и еще, но это уже не так важно. Как можно сделать так, что бы сразу открывалось окно закачки, а не открывалось через Media Player ???
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
||||
| 22.12.2011, 14:26 | ||||
Вот здесь (http://lists.nyphp.org/piperma... 05058.html) пишут что для MSIE нужно еще Content-Disposition: filename использовать вместо Content-Disposition: attachment.
0
|
||||
|
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
|
|
| 22.12.2011, 14:36 | |
|
Хм.. Написать реализацию кэширования запрашиваемых файлов видимо не катит (достаточно перед копированием проверять наличие файла в кэше, удаление же можно производить по дате файла, которая ставится текущей в момент копирования его в кэш).
Любой современный веб-сервер поддерживает докачку. Клиент просто указывает с какого места докачивать (посылает заголовок content-disposition или вроде того). Поэтому возни с написанием механизма выдачи стрима с конкретной позиции не будет. Я конечно не уверен, но на мой взгляд файловый кэш с точки зрения производительности лучше чем каждый раз формировать стрим на выдачу.
0
|
|
|
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
|
||
| 22.12.2011, 15:25 | ||
Лучше использовать вариант с директивой Alias чтобы файлы были доступны по прямой ссылке.
0
|
||
| 22.12.2011, 15:25 | |
|
Помогаю со студенческими работами здесь
14
Как записать данные в файл, находящийся на удаленном хосте? Process.Start: как запустить файл, находящийся в директории программы Как отправить письмо пользователю Переписать файл находящийся в ресурсах или как работает обращение к файлам объявленных в qrc Как на VB script загружать в текстовое окно в HTML страницу текстовый файл находящийся на сервере ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc
О Господи, Вечный, Ты . . .
Я помоги, Бесконечный. . .
Я прошу Ты. . .
Я погибаю, спаси. . .
Я прошу Тебя Вечный. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|