Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как загрузить файл в Safari на iPhone / 2 сообщений из 2, страница 1 из 1
30.06.2016, 10:06
    #39265202
Быдло__кодер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить файл в Safari на iPhone
Необходимо по клику на кнопку "Загрузить" загружать необходимый файл (файлы исключительно видео в .mp4)
Казалось бы тривиальная задача, но все нагугленные способы хорошо работают на всем, кроме iphone
Либо файл открывается просто на проигрывание, либо ничего не происходит

Как пробовал загружать файл:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
<?php

function isIphone($user_agent=NULL) {
    if(!isset($user_agent)) {
        $user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
    }
    return (strpos($user_agent, 'iPhone') !== FALSE);
}

function download_file( $fullPath ){

    // Must be fresh start
    if( headers_sent() )
        die('Headers Sent');

    $fullPath = $_SERVER['DOCUMENT_ROOT'].$fullPath;


    // Required for some browsers
    if(ini_get('zlib.output_compression'))
        ini_set('zlib.output_compression', 'Off');

    // File Exists?
    if( file_exists($fullPath) ){

        // Parse Info / Get Extension
        $fsize = filesize($fullPath);
        $path_parts = pathinfo($fullPath);
        $ext = strtolower($path_parts["extension"]);

        // Determine Content Type
        if ($ext != "mp4")
            die('Allow only mp4 files!');


        if (isIphone()) {
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: private", false);
            header("Content-Type: video/mp4");
        }
        else {
            header("Pragma: public"); // required
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: private",false); // required for certain browsers
            header("Content-Type: video/mp4");
            header("Content-Disposition: attachment; filename=\"".basename($fullPath)."\";" );
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: ".$fsize);
        }


        ob_clean();
        flush();
        readfile( $fullPath );

    } else
        die('File Not Found');

}
?>
...
Рейтинг: 0 / 0
01.07.2016, 15:56
    #39266543
бухалтер фантоцци
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как загрузить файл в Safari на iPhone
я так делаю для всех, конкретно на Safari не проверял

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
header('Accept-Ranges: bytes');
header('Content-Disposition: attachment; filename='.$fileName);
header('Content-Type: application/zip; name="'.$fileName.'"'); // video/mp4
readfile($filePath);
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как загрузить файл в Safari на iPhone / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]