1

我在 codeigniter 中创建下载链接时遇到问题。我的问题是我的文件名有一个本地路径:

C:\wamp\www\elance\zip2\uploads/13487727859183.zip

现在要制作下载链接,我需要类似的东西http://localhost/elance/zip2/uploads/13487727859183.zip

我很困惑,没有得到解决方法。

4

3 回答 3

0

我想我理解你的问题,因为我今天遇到了同样的问题。

下面是我的单行解决方案,这里有一个解释,以确保我理解正确。

您有一个文件和该文件名的本地路径,可能存储在数据库表或类似文件中......对吗?

例如。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()”输出即可。

如果您的文件所在的文件夹不是您的 app 文件夹的子文件夹,则您必须对 FCPATH 和 base_url() 位进行硬编码...

希望有帮助!皮特

于 2012-11-13T16:09:12.613 回答
0

未经测试,我认为这应该可以正常工作。该功能将需要放置在助手中

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\");
于 2012-09-27T21:26:04.287 回答
0

如果你想转换C:\wamp\www\elance\zip2\uploads/13487727859183.ziphttp://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);
于 2012-09-27T20:53:20.133 回答