codeigniter でダウンロード リンクを作成する際に問題があります。私の問題は、ファイル名のローカルパスを持っていることです:
C:\wamp\www\elance\zip2\uploads/13487727859183.zip
ダウンロードリンクを作成するには、次のようなものが必要ですhttp://localhost/elance/zip2/uploads/13487727859183.zip
私は混乱していて、それを行う方法がわかりません。
codeigniter でダウンロード リンクを作成する際に問題があります。私の問題は、ファイル名のローカルパスを持っていることです:
C:\wamp\www\elance\zip2\uploads/13487727859183.zip
ダウンロードリンクを作成するには、次のようなものが必要ですhttp://localhost/elance/zip2/uploads/13487727859183.zip
私は混乱していて、それを行う方法がわかりません。
に変換C:\wamp\www\elance\zip2\uploads/13487727859183.zip
したいhttp://localhost/elance/zip2/uploads/13487727859183.zip
場合は、単にstr_replaceを使用できます
$str = "C:\wamp\www\elance\zip2\uploads/13487727859183.zip";
$str = str_replace("C:\wamp\www\","http://localhost/", $str);
$str = str_replace('\\', '/', $str);
テストしなくても、これでうまくいくはずです。関数はヘルパーに配置する必要があります
function create_download_link($file, $base_url, $location = "C:\wamp\www\") {
$link = "<a href='" . str_replace("\\", "/", str_replace($location, $base_url, $file)) . "'>Download File</a>";
return $link;
}
//example call
create_download_link("C:\wamp\www\elance\zip2\uploads/13487727859183.zip", base_url(), "C:\wamp\www\");
私は今日同じ問題を抱えていたので、あなたの問題を理解していると思います。
以下は私の1行の解決策です。これは、私が正しく理解していることを確認するための説明です。
ファイルと、そのファイル名のローカル パスがあり、データベース テーブルなどに保存されている可能性があります...正しいですか?
例えば。C:\wamp\www\myApp\path\to\file.zip
アプリケーションがリンクを吐き出し、ウェブページを見ている人がそのリンクをクリックしてファイルをダウンロードできるようにしたいですか?
アプリは次の場所にあります: C:\wamp\www\myApp\index.php
以下の動的ソリューションは、ファイルがアプリケーションのルート ディレクトリのサブディレクトリに保存されている場合にのみ機能し、CodeIgniter の事前定義された定数と URL ヘルパーを利用するため簡単です。
// FCPATH -> where the index.php file lives
// $my_file -> your file
$file_url = str_replace(FCPATH, base_url(), $my_file);
それでおしまい。
ファイル パスの「FCPATH」部分を「base_url()」出力に置き換えるだけで、準備完了です。
ファイルがアプリ フォルダーのサブフォルダーではないフォルダーにある場合は、FCPATH および base_url() ビットをハードコーディングする必要があります...
それが役立つことを願っています! ピート