在kohana中将文件作为损坏的文件下载

时间:2012-06-08 06:52:28

标签: kohana-3

大家好,我在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

当我调用此函数文件上传时很好

但是将文件作为损坏的文件下载

帮我解决这个问题..

提前感谢。

2 个答案:

答案 0 :(得分:0)

您不应在路径名称中添加URL::base(),因为这可能会在文件路径中添加类似“http:// ...”的内容。请尝试删除URL::base(),然后重试。

答案 1 :(得分:0)

首先,您可以在这里进行一些简单的调试检查。

我将假设$directory无效。

您希望使用绝对路径常量来构建目录路径。而不是使用$_SERVER['DOCUMENT_ROOT'].URL::base()(在任何情况下都是错误的)

而是使用APPPATHDOCROOT,例如$directory = APPPATH.'media';,请参阅https://github.com/kohana/kohana/blob/3.2/master/index.php#L57-74