1

私はmagentoでuploadifyを実装しようとしています。Magento の私の phtml テンプレートには次のものがあります。

<script type="text/javascript">
( function($) {
$(function() {
    $('.uploadify').uploadify({
        'swf'      : 'uploadify.swf',
        'uploader' : '<?php echo Mage::helper("adminhtml")->getUrl('*/index/upload') ?>',
        'auto'     : true,
    });
});
} ) ( jQuery );
</script>

アップロード アクションは次のようになります。

public function uploadAction()
{
$targetFolder = '/uploadify/uploads'; // Relative to the root

if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
$targetFile = rtrim($targetPath,'/') . '/' . $_FILES['Filedata']['name'];

// Validate the file type
$fileTypes = array('jpg','jpeg','gif','png'); // File extensions
$fileParts = pathinfo($_FILES['Filedata']['name']);

if (in_array($fileParts['extension'],$fileTypes)) {
    move_uploaded_file($tempFile,$targetFile);
    echo '1';
} else {
    echo 'Invalid file type.';
}
}
}

これは機能していません:(

アップロード アクション内のスクリプトは、uploadify.php のスクリプトとまったく同じです。アップローダー オプションを uploadify.php に変更すると、機能します ('uploader' : 'uploadify.php')。

すべてのヘルプは大歓迎です。

4

1 に答える 1

1

機能しない理由は、フォームが magento サーバー自体から送信されたことを確認するために必要な form_key を提供していないためです。

また、URL とともにセッション ID を指定する必要があります。そうしないと、アップローダーがログイン ユーザーと同じセッションを使用するとは限らないため、ログイン ページが表示されます。

したがって、次のことを試してください。

    <script type="text/javascript">
( function($) {
$(function() {
    $('.uploadify').uploadify({
        'swf'      : 'uploadify.swf',
        'formData' : {'form_key' : '<?php echo $this->getFormKey() ?>'},
        'uploader' : '<?php echo Mage::getModel('adminhtml/url')->addSessionParam()->getUrl('*/index/upload') ?>',
        'auto'     : true,
    });
});
} ) ( jQuery );
</script>

それが役立つことを願っていますか?

于 2012-12-30T22:09:25.067 に答える