2013-07-12 19 views
5

サードパーティのエンドポイントにファイルをアップロードしようとしていますが、APIにapi_keyが必要なため、エンドユーザに公開する。したがって、私の計画はフォームをコントローラ/アクションに向け、そこからデータを投稿することでした。ただし、コントローラーの内部からdebug($this->request->data)を入力すると、ファイルデータが失われます。ビュー上CakePHP:投稿されたファイルデータがリクエスト - >データに含まれていません

形式:

echo $this->Form->create('Media', array('type'=>"file", 'url'=>array('controller'=>'media', 'action'=>'upload'))); 
echo $this->Form->input('name', array("name"=>"name")); 
echo $this->Form->input('file', array('type'=>'file', "name"=>"file")); 
echo $this->Form->input('project_id', array('type'=>'hidden', "name"=>"project_id", "value"=>$project["Project"]['hashed_id'])); 
//THIS CANNOT BE HERE: echo $this->Form->input('api_password', array('type'=>'hidden', "name"=>"api_password", "value"=>'xxxxxxx')); 
echo $this->Form->end("Submit"); 

は、ここで私は、コントローラからの要求データをdebug()ときに私は何を参照してください何:

array(
    'name' => 'Some Name', 
    'project_id' => 'dylh360omu', 
) 

ここで何が起こっていますか?

+0

同じ名前を入力しようとしましたが、入力名は変更しませんでしたか? – Nunser

+2

$ this->リクエストの内容を見てみましたか? 'debug($ this-> request)'私の物件データは、要求データの外で管理されます。 – usumoio

+0

ファイルはどれくらいの大きさで、upload_max_filesizeとmax_post_sizeディレクティブでそのサイズにすることができますか? –

答えて

6

入力要素名はdataという配列に渡された場合に、アップロードデータのみCakeRequest::dataに見出すことができるファイル(手動特定の名前を定義しないデフォルトである)、すなわち:で

<input type='file' name='data[file]'> 

あなたの場合は、しかし、要素は次のようになります。

<input type='file' name='file'> 

は、どのファイルのデータが CakeRequest::params[form]に置かれることになります。 https://github.com/cakephp/cakephp/blob/2.4.0/lib/Cake/Network/CakeRequest.php#L346

だから、どちらかに応じて、フォームに名前を変更します。

$this->Form->input('file', array('type' => 'file', 'name' => 'data[file]')); 

それともCakeRequest::params[form]経由でファイルデータにアクセスします。

debug($this->request->params['form']); 
+0

素晴らしいです!これをどうやって見つけますか? – yuchaozh

+0

ソースコード@yuchaozhを見て – ndm

0

Nunserは正しかった(いつものように) !問題は、入力の名前をカスタマイズしたことに起因します。 options配列から'name'=>'...'を削除すると、ファイルが期待通りに表示されます。これはバグのようですが、誰かがより良い説明をしていれば、それを聞いてみたいと思います。

+0

こんにちは。私は今働いてうれしいです。しかし、ndmの答えは問題の原因と思われる。彼が説明しているようにバグではなく、ちょうど「起こること」です。 – Nunser

+0

ありがとうございます。私はその答えを読んで、あなたは正しい(再び)。 – emersonthis

関連する問題