如何概括或中和base_url()
和getcwd()
之间的差异?
在视图中,我想同时显示内联PDF查看器(使用<object src=''></object>
)和OCR&#39; ed输出。这两个都需要相同的源文件,该文件位于project/public/corpus/<some_id>/file.pdf
(其中project
是CodeIgniter根目录。)
控制器中的代码可以这样概括:
/**
* Fetch the path to the pdf of the document (OCR is preferred)
* $handle is a unique identifier
*/
$object_src = base_url("public/mi-corpus/" . $handle . "/file.pdf");
$ocr_src = getcwd()."/public/mi-corpus/" . $handle . "/file.pdf";
// Returns an <object> node from the source
$this->data['object'] = $this->get_pdf($ocr_src);
// uses a cloud OCR to parse the source and return OCR'ed text, this is irrelevant. But it does use file_exists($src) to check if the path is valid.
$this->data['ocr'] = $this->mipreprocessing->open_ocr($ocr_src);
问题是,当使用base_url()
时,函数file_exists($src)
总是失败,但在为getcwd()
生成src
属性时,<object>
并置失败}。
我看到base_url()
会产生一个真实的&#39;类似URL的字符串(&#34; http://localhost/&#34;等),而getcwd()
产生机器上的实际路径(&#34; D:\ wamp \ www&#34;等在我的情况下,在Windows 10上使用WAMP,我知道,它并不理想)。
有没有办法概括这个陈述,以便我不需要两个单独的路径连接?我做错了吗?
答案 0 :(得分:1)
你需要两个,因为一个是路径而另一个是URL。但它可能会更干一些。
这个答案利用index.php
- FCPATH
中定义的方便常量。
它是前端控制器(index.php)目录的路径。使用常量将使代码更容易移植,更不容易出错。
$doc_location = "public/mi-corpus/" . $handle . "/file.pdf";
$object_src = base_url($doc_location);
$ocr_src = FCPATH.$doc_location;
答案 1 :(得分:0)
对于$ object_src变量,你必须使用以下格式的baseurl()函数
BASE_URL() “FOLDERPATH / file.pdf”
其中folderpath是服务器根目录的路径,例如www。
例如。如果您的pdf文件的服务器路径是/var/www/public/mi-corpus/file.pdf,而您的服务器根目录是/ var / www,那么您的object_src路径将在下面。
$ object_src = base_url()。“public / mi-corpus / file.pdf”;
我希望这可以帮助您理解问题。
感谢