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

它不起作用的原因是您没有提供 form_key 需要验证表单是从 magento 服务器本身提交的。

此外,您需要提供会话 ID 以及 url,否则您将获得登录页面,因为上传者不一定使用与登录用户相同的会话。

因此尝试以下操作:

    <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 回答