2013-03-27 17 views
5

私はフォームの中に私のフォームのフィールドを持っています。ユーザーが保存アイコンをクリックすると、ファイルをサーバーに自然にアップ​​ロードし、ファイル名をデータベースに保存する必要があります。私はファイル名をエコーすることでこれをテストしようとしましたが、動作していないようです。また、ファイル名をデータベースに追加するにはどうすればよいですか?それはモデルで行われますか?ありがとう!カスタムJoomlaコンポーネント用のファイルアップロードフォーム

コントローラ/ customcom.php

jimport('joomla.filesystem.file');  
class CustomComControllerCustomCom extends JControllerForm 
     { 
      function save() 
      { 
       $file = JRequest::getVar('img_url', null, 'files', 'array'); 

       $filename = JFile::makeSafe($file['name']); 

       echo $filename; 
       } 
     } 

モデル/フォーム/ customcom.xml

<?xml version="1.0" encoding="utf-8"?> 
    <form enctype="multipart/form-data"> 
      <fieldset> 
        <field 
         name="img_url" 
         type="file" 
         label="Image upload" 
         description="" 
         size="40" 
         class="inputbox" 
         default="" 
       /> 
      </fieldset> 
    </form> 

答えて

7

はちょうどそれを考え出した(リファクタリングを準備中である)このコンポーネントがかなり古いであることに注意してください。

正しい方法は、トリックを行う必要があります

$jinput = JFactory::getApplication()->input; 
$files = $jinput->files->get('jform'); 
$file = $files['img_url']; 

です。 $ファイルの配列は、次のキーを保持している:それはあったように私は私の元の答えを削除した

  • エラー
  • サイズ
  • tmp_name
  • タイプ

誤解を招く

3

は、メディアマネージャによってインスピレーションを得る:

ちょうど

// Import dependencies 
jimport('joomla.filesystem.file') 

// Get input 
$input = JFactory::getApplication()->input; 

// Get uploaded file info 
$file_info = $input->files->get('img_url', null); 

// This will hold error 
$error = null; 

// Check if there was upload at all, mime is correct, file size, XSS, whatever... 
if (!MycomponentHelper::canUpload($file_info, $error) 
{ 
    $this->setError('problem: ' . $error); 
    return false; 
} 

// Move uploaded file destination 
JFile::upload($file_info['tmp_name'], $destination); 
関連する問題