2013-10-26 76 views
0

我想上傳音頻文件(類型mp3,acc,wav)我正在使用cakephp 2.4.1 stablephp5 stable。我試過mime_content_type,finfo_file來檢查上傳的文件是否爲mp3,acc或wav類型的音頻文件。但是,我得到這個音頻上傳在cakephp2.4

`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]` 

我的應用程序目錄和根目錄DIR被permited與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的錯誤?

任何人都可以解釋我嗎?這對我很有幫助

回答

1

看看數據,上傳被丟棄,因爲有錯誤。 1等於UPLOAD_ERR_INI_SIZE,以及這樣做的原因是:

上傳的文件超過php.iniupload_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的擴展。