我想下载位于我的应用程序的父目录中的文件。
我想下载文件:/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();
?>
但它似乎不起作用......
我想做什么甚至可能?
由于
答案 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);
}