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

source: OpenPNE/trunk/webapp/modules/pc/do/c_file_download.php @ 8577

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

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

File size: 2.4 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 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        $c_commu_topic_comment_id = $requests['target_c_commu_topic_comment_id'];
24        // ----------
25
26        if (!$c_commu_topic_id && !$c_commu_topic_comment_id) {
27            handle_kengen_error();
28        }
29
30        if ($c_commu_topic_comment_id) {
31            $c_topic_comment = db_commu_c_commu_topic_comment4c_commu_topic_comment_id($c_commu_topic_comment_id);
32            $c_commu_id = $c_topic_comment['c_commu_id'];
33            $filename = $c_topic_comment['filename'];
34        } else {
35            $c_topic = db_commu_c_topic4c_commu_topic_id($c_commu_topic_id);
36            $c_commu_id = $c_topic['c_commu_id'];
37            $filename = $c_topic['filename'];
38        }
39
40        //--- 権限チェック
41        //コミュニティ参加者
42        $status = db_common_commu_status($u, $c_commu_id);
43        if (!$status['is_bbs_view']) {
44            handle_kengen_error();
45        }
46
47        // ファイルアップロード機能がオフ
48        if (!OPENPNE_USE_FILEUPLOAD) {
49            handle_kengen_error();
50        }
51
52        // ファイルが存在しない
53        $file = db_file_c_file4filename($filename);
54        if (empty($file)) {
55            handle_kengen_error();
56        }
57
58        // オリジナルファイル名
59        $original_filename = $file['original_filename'];
60        if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false) {
61            // IE の場合のみ、ファイル名を SJIS に変換
62            $original_filename = mb_convert_encoding($original_filename, 'SJIS', 'UTF-8');
63        }
64        $original_filename = str_replace(array("\r", "\n"), '', $original_filename);
65
66        send_nocache_headers(true);
67        header('Content-Disposition: attachment; filename="' . $original_filename . '"');
68        header('Content-Length: '. strlen($file['bin']));
69        header('Content-Type: application/octet-stream');
70        echo $file['bin'];
71        exit;
72    }
73}
74
75?>
Note: See TracBrowser for help on using the repository browser.