コード例 #1
0
ファイル: upload_api.php プロジェクト: big2men/qhm
function action(&$c)
{
    $config = $c->admin->getConfig();
    $overwrite = $config['overwrite'];
    $apikey = isset($_POST['apikey']) && trim($_POST['apikey']) ? trim($_POST['apikey']) : FALSE;
    if (!$c->admin->apiKeyIsCorrect($apikey)) {
        file_put_contents('log.txt', print_r('API KEY ERROR', TRUE));
        die('APIキーが正しくありません');
    }
    file_put_contents('log.txt', print_r('API KEY OK', TRUE));
    $name = isset($_POST['name']) && trim($_POST['name']) ? trim($_POST['name']) : FALSE;
    //画像の説明
    $text = isset($_POST['description']) && trim($_POST['description']) ? trim($_POST['description']) : '画像の説明';
    $page = isset($_POST['page']) ? $_POST['page'] : '';
    file_put_contents('log.txt', print_r($text, TRUE));
    //添付ファイルの取得
    if (!isset($_FILES['img'])) {
        die('画像がありません。');
    }
    $file = $_FILES['img'];
    if ($name !== FALSE && preg_match('/^[-_.+a-zA-Z0-9]+$/', $name)) {
        if (!$overwrite) {
            $name = numbering_filename($name);
        }
        $upload_file = SWFU_DATA_DIR . $name;
        $fname = $name;
    } else {
        if (!preg_match('/([^.]+)\\.(.*)$/', $name, $matches)) {
            echo 'invalid file name';
            exit(0);
        }
        $text = $matches[1];
        $ext = $matches[2];
        $tmp_name = tempnam(SWFU_DATA_DIR, 'auto-');
        $upname = "{$tmp_name}.{$ext}";
        rename($tmp_name, $upname);
        $upload_file = SWFU_DATA_DIR . basename($upname);
        $fname = basename($upname);
    }
    $fp = fopen('data/log.txt', 'a');
    fwrite($fp, date('Y-m-d H:i:s') . "\nimage path: {$upload_file}\n");
    fclose($fp);
    move_uploaded_file($file['tmp_name'], $upload_file);
    //	file_put_contents($upload_file, $imagedata);
    chmod($upload_file, 0666);
    //regist db
    $stat = stat($upload_file);
    $insert_img_data = array('name' => $fname, 'description' => $text, 'created' => $stat['mtime'], 'size' => $stat['size'], 'page_name' => $page);
    $insert_img_data = $c->s->input_filter($insert_img_data);
    $c->image->insert($insert_img_data);
    echo 'success';
}
コード例 #2
0
ファイル: upload2.php プロジェクト: big2men/qhm
function action(&$c)
{
    if (!isset($_FILES['file'])) {
        $c->redirect('index.php');
        exit;
    }
    $config = $c->admin->getConfig();
    $overwrite = $config['overwrite'];
    $file = $_FILES['file'];
    $upload_name = $file['name'];
    //モード
    $mode = isset($_POST['mode']) ? $_POST['mode'] : 'ajax';
    switch ($mode) {
        case 'raw':
            $mode = 'raw';
            break;
        default:
            $mode = 'ajax';
    }
    //画像の説明
    $text = '画像の説明';
    $page = isset($_POST['page']) ? $_POST['page'] : '';
    if (preg_match('/^[-_.+a-zA-Z0-9]+$/', $upload_name)) {
        if (!$overwrite) {
            $upload_name = numbering_filename($upload_name);
        }
        $upload_file = SWFU_DATA_DIR . $upload_name;
        $fname = $upload_name;
    } else {
        if (!preg_match('/([^.]+)\\.(.*)$/', $upload_name, $matches)) {
            echo 'invalid file name';
            exit(0);
        }
        $text = $matches[1];
        $ext = $matches[2];
        $tmp_name = tempnam(SWFU_DATA_DIR, 'auto-');
        $upname = "{$tmp_name}.{$ext}";
        rename($tmp_name, $upname);
        $upload_file = SWFU_DATA_DIR . basename($upname);
        $fname = basename($upname);
    }
    move_uploaded_file($file['tmp_name'], $upload_file);
    chmod($upload_file, 0666);
    //regist db
    $stat = stat($upload_file);
    $insert_img_data = array('name' => $fname, 'description' => $text, 'created' => $stat['mtime'], 'size' => $stat['size'], 'page_name' => $page);
    $insert_img_data = $c->s->input_filter($insert_img_data);
    if ($overwrite) {
        if ($image = $c->image->findoneby('name', $fname)) {
            unset($insert_img_data['description'], $insert_img_data['created']);
            $insert_img_data['id'] = $image['id'];
            $c->image->update($insert_img_data);
        } else {
            $c->image->insert($insert_img_data);
        }
    } else {
        $c->image->insert($insert_img_data);
    }
    $last = $c->image->findoneby('name', $fname);
    if ($last) {
        $last_id = $last['id'];
    }
    $buttons = get_buttons($insert_img_data, false);
    $fpath = SWFU_DATA_DIR . $fname;
    $preview = '';
    if (preg_match('/^image\\//', $file['type'])) {
        $imgarr = getimagesize($fpath);
        $imgwidth = $imgarr[0];
        $imgheight = $imgarr[1];
        $longside = max(array($imgwidth, $imgheight));
        if ($longside > PREVIEW_SIZE) {
            $ratio = PREVIEW_SIZE / $longside;
            $prvwidth = ceil($imgwidth * $ratio);
            $prvheight = ceil($imgheight * $ratio);
        } else {
            $prvwidth = $imgwidth;
            $prvheight = $imgheight;
        }
        $preview = "{$prvwidth}x{$prvheight}";
        //WIDTHxHEIGHTの形式で返す
    }
    $size = format_bytes($stat['size'], 0);
    if ($mode == 'ajax') {
        header("Content-Type: application/json; charset=UTF-8");
        echo '{"name":"' . $fname . '","path":"' . $fpath . '","preview":"' . $preview . '","text":"' . h($text) . '","type":"' . $file['type'] . '","size":"' . $size . '","buttons":"' . addcslashes($buttons, '"') . '"' . (isset($last_id) ? ",\"id\":{$last_id}" : '') . '}';
        exit;
    } else {
        $c->set('fname', $fname);
        $c->set('image', $last);
        $c->set('page_name', $page);
        $c->SetViewFile('ctp/upload.html');
    }
}