2016-10-18 9 views
0

base_url()getcwd()の違いを一般化または中和する方法を教えてください。hrefのCodeIgniter base_url()とfile_exists()のgetcwd()

ビューでは、インラインPDFビューア(<object src=''></object>を使用)とOCRの出力を表示します。どちらも同じソースファイルが必要です。これはproject/public/corpus/<some_id>/file.pdfprojectは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)は常に失敗し、ですが、HTMLのためsrc属性を製造する場合getcwd()連結が失敗し<object>

私は getcwd()は、マシン上の実際のパス(「D:\ WAMP \ WWW 『生み出す一方 base_url()は、「実際の」URLのような文字列(』 http://localhost/」など)が得られることがわかり

使用して、私の場合などWindows 10のWAMP、私はそれが理想的ではないことを知っています)。

このステートメントを一般化して、2つの別々のパスの連結を必要としない方法はありますか?私はこれをすべて間違っているのですか?あなたは(BASEURLを使用する必要が$ object_src変数)関数の

答えて

1

1は、パスや他のURLであるため、次の2つが必要です。しかしそれはもう少しDRYになる可能性があります。

この回答は、index.php - FCPATHで定義された便利な定数を使用しています。 フロントコントローラー(index.php)ディレクトリーへのパスです。この定数を使用すると、コードをより移植しやすくなり、エラーが発生しにくくなります。

$doc_location = "public/mi-corpus/" . $handle . "/file.pdf"; 
$object_src = base_url($doc_location); 
$ocr_src = FCPATH.$doc_location; 
+0

ありがとうございます。あまりにも私は参照をマージすることはできませんが、これは私の質問に答える悪い:) –

0

形式以下で

BASE_URL()。 "フォルダパス/ file.pdfは、" フォルダパスは、サーバーのルートディレクトリからのパスである

は、WWWを言います。

例えば、 pdfファイルのサーバーパスが/var/www/public/mi-corpus/file.pdfで、サーバールートディレクトリが/ var/wwwの場合、object_srcパスは下になります。

$ object_src = base_url()。 "public/mi-corpus/file.pdf";

私はこれが問題の理解に役立つことを願っています。

おかげ

+0

私はこれがすでに動作していて、パスを1つにマージできるかどうか疑問に思っていましたが、ありがとうございました。 –

関連する問題