ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/stable-2.10.x/webapp/modules/pc/do/c_file_download.php @ 8578

Last change on this file since 8578 was 8578, checked in by ebihara, 12 years ago

#2842:ファイルダウンロード時には常にキャッシュをさせないヘッダを出力するように修正

File size: 1.9 KB
Line 
1<?php
2/**
3 * @copyright 2005-2007 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7class pc_do_c_file_download extends OpenPNE_Action
8{
9    function isSecure()
10    {
11        // SSL有効時にIEでファイルダウンロードできなくなる問題の対策
12        session_cache_limiter('public');
13
14        return true;
15    }
16
17    function execute($requests)
18    {
19        $u = $GLOBALS['AUTH']->uid();
20
21        // --- リクエスト変数
22        $c_commu_topic_id = $requests['target_c_commu_topic_id'];
23        // ----------
24
25        //--- 権限チェック
26        //コミュニティ参加者
27
28        $c_topic = c_topic_detail_c_topic4c_commu_topic_id($c_commu_topic_id);
29        $c_commu_id = $c_topic['c_commu_id'];
30
31        $status = db_common_commu_status($u, $c_commu_id);
32        if (!$status['is_bbs_view']) {
33            handle_kengen_error();
34        }
35
36        // ファイルアップロード機能がオフ
37        if (!OPENPNE_USE_FILEUPLOAD) {
38            handle_kengen_error();
39        }
40
41        // ファイルが存在しない
42        $file = db_file_c_file4filename($c_topic['filename']);
43        if (empty($file)) {
44            handle_kengen_error();
45        }
46
47        // オリジナルファイル名
48        $original_filename = $file['original_filename'];
49        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
50            // IE の場合のみ、ファイル名を SJIS に変換
51            $original_filename = mb_convert_encoding($original_filename, 'SJIS', 'UTF-8');
52        }
53        $original_filename = str_replace(array("\r", "\n"), '', $original_filename);
54
55        send_nocache_headers(true);
56        header('Content-Disposition: attachment; filename="' . $original_filename . '"');
57        header('Content-Length: '. strlen($file['bin']));
58        header('Content-Type: application/octet-stream');
59        echo $file['bin'];
60        exit;
61    }
62}
63
64?>
Note: See TracBrowser for help on using the repository browser.