在cakephp2.4中上传音频

时间:2013-10-26 08:15:55

标签: cakephp audio file-upload cakephp-2.4

我想上传音频文件(mp3accwav)我正在使用cakephp 2.4.1 stablephp5 stable。我已尝试mime_content_typefinfo_file检查上传的文件是否为mp3,acc或wav类型的音频文件。但我得到了这个

`error mime_content_type(059.piya basanti re... [piya basanti][2000].mp3): failed to open stream: No such file or directory [APP/Controller/AdminController.php, line 86]`

我的app dir和webroot dir被授予0777.

这是我的 view.ctp 代码:

<?= $this->Form->create('Homepage',array('type'=>'file'));
echo $this->Form->input('audio_1',array('type'=>'file'));
echo $this->Form->submit('Submit');
echo $this->Form->end(); ?>

我的控制器代码

    public function saveaudio() {
            if($this->request->is('post')) {
                $this->loadModel('Homepage');
//this is line 86//   $file = mime_content_type($this->request->data['Homepage']['audio_1']['name']);
                 pr($file);exit;
              }

这是我的数据

Array
(
    [Homepage] => Array
        (
            [audio_1] => Array
                (
                    [name] => 059.piya basanti re... [piya basanti][2000].mp3
                    [type] => 
                    [tmp_name] => 
                    [error] => 1
                    [size] => 0
                )

        )
)

我的问题是:

  1. 如何检查文件类型?首先,我想检查它的mime类型,然后我想保存它
  2. 为什么我没有获取上传文件的tmp_name?
  3. 为什么我收到mime_content_type的错误?
  4. 任何人都可以解释一下吗?这对我有帮助

1 个答案:

答案 0 :(得分:1)

查看数据,上传被丢弃,因为有错误。 1等于UPLOAD_ERR_INI_SIZE,其原因是:

  

上传的文件超出了php.ini中的upload_max_filesize指令。

请参阅http://php.net/manual/features.file-upload.errors.php

因此,您必须增加该值,并且很可能也post_max_size,请参阅http://php.net/manual/features.file-upload.common-pitfalls.php以获取更多信息。

上传后,您必须使用正确的密钥,audio_1,而不是audio_,然后您还必须使用tmp_name,即:

$this->request->data['Homepage']['audio_']['name']

应该是这个

$this->request->data['Homepage']['audio_1']['tmp_name']

在旁注中,mime_content_type已被弃用,转而使用Fileinfo扩展名。