0

我正在使用 Codeigniter 的文件上传库上传文件并尝试将 URL 插入数据库。Codeigniter 仅在使用时提供 server_path $this->upload->data(),不能用于向用户显示图像。

我通常可以做类似的事情,base_url('uploads) . '/' . $data['file_name']但我将每个帖子的图像存储在一个文件夹中。

例如,我得到C:/xampp/htdocs/site/uploads/32/image.jpg了完整路径,如何将其转换为http://mysite.com/uploads/32/image.jpg

唯一想到的是使用正则表达式,但我觉得必须有 PHP 函数或 Codeigniter 函数来帮助解决这个问题?

如何将服务器路径转换为正确的 URL?

4

3 回答 3

2

您可以使用 $_SERVER['HTTP_HOST']; 获取网址。使用帖子的 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]C:$pathElements[1]xampp,等等......

于 2012-11-28T23:28:12.250 回答
0

您只需要将文件名保存到数据库,只需使用帖子 ID 和文件名:

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

获取文件名使用:如何使用 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 回答