5

フォームにファイルタイプのフィールドがあります。ユーザーが保存アイコンをクリックしたときに、ファイルをサーバーに自然にアップ​​ロードして、ファイル名をデータベースに保存したいと思います。ファイル名をエコーし​​てこれをテストしようとしましたが、機能していないようです。また、ファイル名をデータベースに追加するにはどうすればよいですか?モデルで行われていますか?ありがとう!

controllers / 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;
                }
        }

models / forms / 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>
4

2 に答える 2

7

ちょうどそれを理解しました。

正しい方法は

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

それでうまくいくはずです。$ file配列は、次のキーを保持します。

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

誤解を招く可能性があるため、元の回答を削除しました。

于 2013-03-28T08:01:19.497 に答える
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);
于 2013-03-27T09:17:13.540 に答える