大家好,我在kohana上面临文件上传和下载的问题
my controller is like this:
class Controller_Test extends Controller
{
public function action_display()
{
$type = $_FILES['file']['type'];
switch ($type)
{
case 'image/gif':
$otype='.gif'; break;
case 'image/jpeg':
case 'image/pjpeg':
$otype= '.jpg'; break;
case 'image/png':
$otype= '.png'; break;
case 'application/octet-stream':
$otype='.doc'; break;
case 'txt': $otype='.txt'; break;
case 'application/pdf': $otype='.pdf'; break;
}
//rename the file
$name = time() . '_' . mt_rand(1000,9999).$otype;
$directory = $_SERVER['DOCUMENT_ROOT'].URL::base().'media';
//uploading a file
$filename = Upload::save($_FILES['file'], $name, $directory);
$this->auto_render = false;
$this->response->send_file($filename);
}//action
}//controller
当我调用此函数文件上传时很好
但是将文件作为损坏的文件下载
帮我解决这个问题..
提前感谢。
答案 0 :(得分:0)
您不应在路径名称中添加URL::base()
,因为这可能会在文件路径中添加类似“http:// ...”的内容。请尝试删除URL::base()
,然后重试。
答案 1 :(得分:0)
首先,您可以在这里进行一些简单的调试检查。
$directory
有效吗?$filename
有效的文件路径,还是FALSE
? (见http://kohanaframework.org/3.2/guide/api/Upload#save)我将假设$directory
无效。
您希望使用绝对路径常量来构建目录路径。而不是使用$_SERVER['DOCUMENT_ROOT'].URL::base()
(在任何情况下都是错误的)
而是使用APPPATH
或DOCROOT
,例如$directory = APPPATH.'media';
,请参阅https://github.com/kohana/kohana/blob/3.2/master/index.php#L57-74