0

Codeigniter の File Uploading Library を使用してファイルをアップロードし、URL をデータベースに挿入しようとしています。Codeigniter は、使用時に server_path のみを提供$this->upload->data()します。これは、ユーザーに画像を表示するために使用できません。

通常は次のようなことができbase_url('uploads) . '/' . $data['file_name']ますが、投稿ごとに画像をフォルダーに保存しています。

たとえばC:/xampp/htdocs/site/uploads/32/image.jpg、full_path として取得していますが、これを次のように変換するにはどうすればよいですか?http://mysite.com/uploads/32/image.jpg

頭に浮かぶ唯一のことは正規表現を使用することですが、これを支援するために PHP 関数または Codeigniter 関数が必要であると感じていますか?

サーバー パスを正しい URL に変換するにはどうすればよいですか?

4

3 に答える 3

2

$_SERVER['HTTP_HOST']; を使用できます。URLを取得します。投稿の ID を使用して、次のようにパスを作成できます。

$url = "http://" . $_SERVER['HTTP_HOST'] . "/" . $id . "/" . basename($data['file_name']);

basename() 関数は、パスの最後の / の後のすべてを返します。

于 2012-11-28T23:25:48.493 に答える
0

CodeIgniter使用する必要があります$config['base_url']

を使用して、ENVIRONMENTさまざまな をセットアップできますbase_url。たとえば、次のようになります。

switch(ENVIRONMENT)
{
    case 'development':
        $config['base_url'] = 'http://localhost/';
        break;
    case 'testing':
        $config['base_url'] = 'http://testing.server.com/';
        break;
    default:
        $config['base_url'] = 'http://liveserver.com/';    
}

見るconfig.php

base_urlローカルパスをに置き換えるだけでstr_replace、仕事をする必要があります(ドキュメントはこちら

$newpath = str_replace("C:/xampp/htdocs/site/", $config['base_url'], $localpath);

また、パスの一部を取得することに興味がある場合は、パスのすべての「セクション」で配列を作成するためにexplode(ドキュメントはこちら) を使用できます。/

$pathElements = explode('/', $localpath);

この場合、$pathElements[0]is C:$pathElements[1]isxamppなど...

于 2012-11-28T23:28:12.250 に答える
0

ファイル名をデータベースに保存し、投稿 ID とファイル名を使用するだけです。

$url = "http://mysite.com/uploads/" . $postID . "/" . $fileName; 

ファイル名の使用を取得するには: How to get file name from full path with PHP?

<?php
$path = "C:/xampp/htdocs/site/uploads/32/image.jpg";
$file = basename($path);         // $file is set to "image.jpg"
$file = basename($path, ".jpg"); // $file is set to "image"
?>
于 2012-11-28T23:42:33.470 に答える