2

モデルを作成しているビューに画像アップロード機能を追加しようとしています。ここで多くのサンプル コードを試しましたが、ファイルへのフル パスを取得できません。私のコードは次のようになります。

public function submit() {
    jimport ( 'joomla.filesystem.file' );
    // Check for request forgeries.
    JRequest::checkToken () or jexit ( JText::_ ( 'JINVALID_TOKEN' ) );

    // Initialise variables.
    $app = JFactory::getApplication ();
    $model = $this->getModel ( 'createaction' );

    // Get the data from the form POST
    $data = JRequest::getVar ( 'jform', array (), 'post', 'array' );

    echo $data['image'];   <-- here

    $createdItem = $model->createItem ( $data );
    if ($createdItem) {
        $redirect = JRoute::_ ( 'index.php?option=com_akcehned&view=actions', false );
        $this->setRedirect ( $redirect, "Akce byla vytvořena" );
    } else {
        echo "<h2>Omlouváme se, ale něco se stalo špatně</h2>";
    }

    return true;
}

xml のファイル入力の一部:

    <field 
        name="image" 
        type="file" 
        description="COM_AKCEHNED_FORM_DESC_CREATEACTION_IMAGE" 
        label="COM_AKCEHNED_FORM_LBL_CREATEACTION_IMAGE" 
        size="10" 
        accept="image/*" />

ファイルファイル入力をエコーし​​ようとしたところ、名前(image_name.jpgなど)だけが取得されましたが、フルパスが必要ですか?['tmp_name'] の例を見ましたが、うまくいきません。私はこのようなコードを試しました:

$jinput = $app->input;
$files = $jinput->files->get('jform');
$file = $files['image'];
echo $file;
echo $file['tmp_name'];

しかし、それは私にとってもうまくいきません。空の値を取得するだけです。他の入力からデータを取得し、アップロードするファイルへのフルパスを取得するコードの作業ブロックを誰かに教えてもらえますか? joomla 2.5用です、ありがとう

4

2 に答える 2

1

DPAttachmentsを試してみましたか? 3 行のコードだけで、添付ファイルのサポートをコンポーネントに統合できます。

if (JLoader::import('components.com_dpattachments.libraries.dpattachments.core', JPATH_ADMINISTRATOR)) {
    echo DPAttachmentsCore::render('com_demo.item', $object->id);
}

クリップボードからのドラッグ アンド ドロップとコピー ペースト (ファイルをハードディスクに保存する必要はありません) がサポートされています。おそらく、あなたはそれを試してみたいと思うでしょう。ここにない場合は、アップロード機能の実装方法に関する Github リポジトリへのリンクがあります: https://github.com/Digital-Peak/DPAttachments/blob/master/com_dpattachments/admin/models/attachment.php#L50

[私はこのコンポーネントの作成者です]

于 2013-10-18T11:58:15.233 に答える