0

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

当我调用这个函数文件上传正常

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

帮我解决这个问题..

提前致谢。

4

2 回答 2

0

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

我会假设$directory是无效的。

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

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

于 2012-06-08T09:28:13.947 回答
0

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

于 2012-06-08T06:59:29.853 回答