我刚开始使用 meioupload 从 cakephp 上传我的文件,但是,我不确定如何编写下载代码。
我尝试使用以下代码:
echo $file['Image']['dir'].$file['Image']['filename'];
但是,似乎代码是错误的。因为它输出以下内容:
uploads\image\filenamedb_fyp_2.txt
如何下载文件 db_fyp2.txt?
我刚开始使用 meioupload 从 cakephp 上传我的文件,但是,我不确定如何编写下载代码。
我尝试使用以下代码:
echo $file['Image']['dir'].$file['Image']['filename'];
但是,似乎代码是错误的。因为它输出以下内容:
uploads\image\filenamedb_fyp_2.txt
如何下载文件 db_fyp2.txt?
好吧,您告诉您的应用程序只是回显文件路径,而这正是它正在做的事情。如果您只想在浏览器中打开文件,请改用redirect
控制流,例如:
class YourController extends AppController {
public function upload() {
// You upload logic here, followed by ...
$this->redirect($file['Image']['dir'].$file['Image']['filename']);
}
}
如果您希望浏览器提供文件作为下载,请发送相应的 Content-Disposition标头(参见示例 #1)。
header('Content-Disposition: attachment; filename="' . $file['Image']['filename'] . '"');
readfile($file['Image']['dir'].$file['Image']['filename']);
尝试将根目录添加到要打印的位置。只有给定了 url,它才会起作用。而您在这里所做的主要 mitake 是您必须将其设为链接,而不仅仅是打印它。
$this->Html->link('Link Name',$path to that file);
感谢您的回答,但我已经知道如何使用 cakephp 的 mediaview 下载文件。
无论如何,要回答我自己的问题,下载具有各种扩展名的文件,可以使用以下代码。
使用 cakephp 的媒体视图 - 在控制器中
public function download($id){
$this->viewClass = 'Media';
$this->autoLayout = false;
$file = $this->Image->findById($id);
$link = $file['Image']['dir'];
$params = array(
'id' => $file['Image']['filename'],
'name' => $file['Image']['filename'],
'download' => true,
'mimeType' => $file['Image']['mimetype'],
'extension' => array('pdf','zip','txt'),
'path' => $link.DS
);
$this->set($params);