php – 如何在一个Magento站点上拥有两个最大文件大小限制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 如何在一个Magento站点上拥有两个最大文件大小限制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2526字,纯文字阅读大概需要4分钟。
内容图文
所以这是我的问题.在我们的Magento网站的管理部分,我们需要能够上传文件,每个文件可以是2-500 MB.我已经适当地设置了我的php.ini设置,这一切都很好.但现在我被要求允许访客从前端上传文件.显然,我不想让陌生人能够上传500 MB文件.我一直在四处寻找并且无法找到这个问题的直接答案.
那么如何让管理员继续上传超大文件,同时将前端用户限制在较小的文件大小?
这是我目前的解决方案:
public function saveAction()
{
$post = $this->getRequest()->getPost();
$helper = Mage::helper('my_module');
if ( $post ) {
try {
if ($_FILES['size'] >= 2000000) { // Limit is set to 2 MB
$errors[] = $helper->__('You have exceeded the max file size.');
$error = true;
}
if ($error) {
throw new Exception();
}
// Perform save operations here.
} catch (Exception $e) {
foreach($errors as $error) {
Mage::getSingleton('core/session')->addError($error);
}
$this->_redirect('*/*/*');
return;
}
}
}
这将检查文件是否超出限制.如果是,则抛出异常.
我意识到这个解决方案很简单,这就是为什么我要问周围是否有人有更好的/替代解决方案.我期待着阅读你的答案.
解决方法:
您可以做的是向事件controller_action_predispatch添加一个Observer,并从那里只捕获POST发送给扩展Mage_Core_Controller_Front_Action的控制器.
这样,您将获得在任何操作上发布的每个文件,并且不必一次又一次地重做相同的作业.奖金是,当使用观察者时,你并没有搞乱Magento的核心.
等/ config.xml中
<?xml version="1.0"?>
<config>
<modules>
<Bdotenoitdotbe_Module>
<version>0.0.0.1</version>
</Bdotenoitdotbe_Module>
</modules>
<global>
<models>
<bdotenoitdotbe_module>
<class>Bdotenoitdotbe_Module_Model</class>
</bdotenoitdotbe_module>
</models>
</global>
<frontend>
<events>
<controller_action_predispatch>
<observers>
<bdotenoitdotbe_module_controller_action_predispatch>
<class>bdotenoitdotbe_module/observer</class>
<method>parseFiles</method>
</bdotenoitdotbe_module_controller_action_predispatch>
</observers>
</controller_action_predispatch>
</events>
</frontend>
</config>
型号/ Observer.php
<?php
class Bdotenoitdotbe_Module_Model_Observer {
const MAX_FRONTEND_UPLOAD_SIZE = 2000000;
public function parseFiles($observer){
if($observer->getEvent()->getControllerAction() instanceof Mage_Core_Controller_Front_Action &&
$observer->getEvent()->getControllerAction()->getRequest()->isPost()) {
foreach($_FILES as $file_key => $file) {
if($file['size'] > self::MAX_FRONTEND_UPLOAD_SIZE) {
Mage::getSingleton('core/session')->addError('File too big : '.$file['name']);
/**
* you can do unset($_FILES[$file_key]);
* but I would rather do the following to simulate a file too big behaviour
*/
$file['error'] = UPLOAD_ERR_FORM_SIZE;
$file['tmp_name'] = null;
$file['size'] = 0;
$_FILES[$file_key] = $file;
}
}
}
}
}
内容总结
以上是互联网集市为您收集整理的php – 如何在一个Magento站点上拥有两个最大文件大小限制全部内容,希望文章能够帮你解决php – 如何在一个Magento站点上拥有两个最大文件大小限制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。