从某个父目录下载文件

时间:2015-08-19 12:58:26

标签: cakephp

我想下载位于我的应用程序的父目录中的文件。

我想下载文件:/mydirectory/myfile.ext 我的申请位于:/ www / app /

我尝试过这样的事情:<?php $mysqli = new mysqli("localhost", "my_user", "my_password", "world"); /* check connection */ if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); } $query = "SELECT * FROM table_name"; if ($result = $mysqli->query($query)) { /* fetch associative array */ while ($row = $result->fetch_assoc()) { printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); } /* free result set */ $result->free(); } /* close connection */ $mysqli->close(); ?> 但它似乎不起作用......

我想做什么甚至可能?

由于

3 个答案:

答案 0 :(得分:1)

在您应用的webroot中创建一个符号链接,指向您希望允许从服务器访问文件的目录: -

ln -s source_directory link_directory

这将提供对webroot目录的访问。

然后,您可以轻松链接到您的文件: -

echo $this->Html->link('test', 'link_directory/myfile.ext');

答案 1 :(得分:0)

您无法使用简单的a标记下载CakePHP应用程序范围之外的文件,除非您的服务器能够提供此类文件(即,可以使用www.example.org/myfiles等直接网址访问这些文件)。

但是你可以创建一个下载文件的动作,这很简单:

public function download () {
    $this->response->file(
        '/mydirectory/myfile.ext',
        array('download' => true)
    );
    return $this->response ;
}

答案 2 :(得分:0)

我找到了一种在CakePHP范围之外下载文件的方法。 在下载之前,我只是将文件复制到可访问的路径中,它是快速且安全的imo。

我在Controller中创建了一个函数dl(),当我调用这个函数时,我检查下载目录中的文件是否存在或者与原始文件不同,然后我将文件复制到下载目录。 然后我可以按照我想要的方式下载文件

$SantVersionUrl = '/some/parent/path/file.zip';
$SantDlUrl = '/app/webroot/folder/file.zip';
$SantVersion = new File($SantVersionUrl);
$SantDL = new File($SantDlUrl);
if (!$SantDL->exists() || $SantVersion->md5(true) != $SantDL->md5(true)) {
   $SantVersion->copy($SantDlUrl,true);
}