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

Changeset 2659


Ignore:
Timestamp:
May 1, 2007, 6:46:13 PM (13 years ago)
Author:
ogawa
Message:

#650:Webサーバ分散環境でファイルアップロードができない

Location:
OpenPNE/branches/2.8.x
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/branches/2.8.x/config.php.sample

    r2641 r2659  
    6969// 確認画面用の一時画像をDBに保存するかどうか
    7070define('OPENPNE_TMP_IMAGE_DB', false);
     71
     72// 確認画面用の一時ファイルをDBに保存するかどうか
     73define('OPENPNE_TMP_FILE_DB', false);
    7174
    7275///
  • OpenPNE/branches/2.8.x/webapp/lib/OpenPNE/Config.php

    r2466 r2659  
    144144            'SESSION_SAVE_DB' => false,
    145145            'OPENPNE_TMP_IMAGE_DB' => false,
     146            'OPENPNE_TMP_FILE_DB' => false,
    146147            'OPENPNE_USE_PARTIAL_SSL' => false,
    147148            'OPENPNE_USE_SSL_PARAM' => false,
  • OpenPNE/branches/2.8.x/webapp/lib/db/file.php

    r2296 r2659  
    105105}
    106106
     107/**
     108 * 管理画面用に一時ファイル情報をDBに挿入する
     109 *
     110 * @param string $filename
     111 * @param string $filepath
     112 * @param string $original_filename
     113 */
     114function db_file_insert_c_tmp_file($filename, $filepath, $original_filename)
     115{
     116    if (!is_readable($filepath)) {
     117        return false;
     118    }
     119
     120    $fp = fopen($filepath, 'rb');
     121    $file_data = fread($fp, filesize($filepath));
     122    fclose($fp);
     123
     124    $sql = 'DELETE FROM c_tmp_file WHERE filename = ?';
     125    $params = array($filename);
     126    db_query($sql, $params);
     127
     128    $data = array(
     129        'filename'   => $filename,
     130        'bin'        => $file_data,
     131        'original_filename' => $original_filename,
     132        'r_datetime' => db_now(),
     133    );
     134    return db_insert('c_tmp_file', $data);
     135}
     136
     137/**
     138 * DBから管理画面用の一時ファイル情報を削除する
     139 */
     140function db_file_clear_tmp_db($uid)
     141{
     142    $sql = 'DELETE FROM c_tmp_file WHERE filename LIKE ?';
     143    $params = array('%_' . $uid . '.%');
     144    db_query($sql, $params);
     145}
     146
     147/**
     148 * ファイル名から一時保存ファイルを取得
     149 */
     150function db_file_c_tmp_file4filename($filename)
     151{
     152    $sql = 'SELECT * FROM c_tmp_file WHERE filename = ?';
     153    $params = array($filename);
     154    return db_get_row($sql, $params);
     155}
    107156?>
  • OpenPNE/branches/2.8.x/webapp/lib/util/upload.php

    r2297 r2659  
    3737    }
    3838
    39     // var/tmp/ディレクトリにファイルを移動する
    40     move_uploaded_file($upfile['tmp_name'], $filepath);
    41     chmod($filepath, 0644);
    42     if (!is_file($filepath)) {
    43         return false;
     39    if (OPENPNE_TMP_FILE_DB) {
     40        // 一時ファイルをDBに保存する
     41        if (!db_file_insert_c_tmp_file($filename, $upfile['tmp_name'], $upfile['name'])) {
     42            return false;
     43        }
     44    } else {
     45        // var/tmp/ディレクトリにファイルを移動する
     46        move_uploaded_file($upfile['tmp_name'], $filepath);
     47        chmod($filepath, 0644);
     48        if (!is_file($filepath)) {
     49            return false;
     50        }
    4451    }
    4552
    4653    return $filename;
     54}
     55
     56/**
     57 * 確認画面用の一時ファイルを削除する
     58 */
     59function t_file_clear_tmp($uid)
     60{
     61    if (OPENPNE_TMP_FILE_DB) {
     62        db_file_clear_tmp_db($uid);
     63    }
    4764}
    4865
     
    6582    $filename = sprintf('%s_%s.%s', $prefix, time(), $ext);
    6683
    67     $tmp_dir_path = OPENPNE_VAR_DIR . '/tmp/';
    68     $filepath = $tmp_dir_path . basename($tmpfile);
     84    if (OPENPNE_TMP_FILE_DB) {
     85        $tmpfile_name = basename($tmpfile);
     86        $c_tmp_file = db_file_c_tmp_file4filename($tmpfile_name);
     87        $fileData = $c_tmp_file['bin'];
     88    } else {
     89        $tmp_dir_path = OPENPNE_VAR_DIR . '/tmp/';
     90        $filepath = $tmp_dir_path . basename($tmpfile);
    6991
    70     if (!is_readable($filepath)) {
    71         return false;
     92        if (!is_readable($filepath)) {
     93            return false;
     94        }
     95
     96        $fp = fopen($filepath, 'rb');
     97        $fileData = fread($fp, filesize($filepath));
     98        fclose($fp);
    7299    }
    73 
    74     $fp = fopen($filepath, 'rb');
    75     $fileData = fread($fp, filesize($filepath));
    76     fclose($fp);
    77100
    78101    if (db_file_insert_c_file($filename, $fileData, $original_filename)) {
  • OpenPNE/branches/2.8.x/webapp/modules/pc/do/c_topic_add_insert_c_commu_topic.php

    r2466 r2659  
    7878        //テンポラリファイルを削除(画像と同時)
    7979        t_image_clear_tmp(session_id());
     80        t_file_clear_tmp(session_id());
    8081
    8182        $insert_c_commu_topic_comment = array(
  • OpenPNE/branches/2.8.x/webapp/modules/pc/do/c_topic_edit_update_c_commu_topic.php

    r2466 r2659  
    107107        }
    108108        t_image_clear_tmp(session_id());
     109        t_file_clear_tmp(session_id());
    109110
    110111
Note: See TracChangeset for help on using the changeset viewer.