好吧,
我读过,也尝试过很多关于如何用Zend Framework实现上传的东西,我可能忽略了一些东西,但是我完全被困住了。看来我的行动没有被召唤。
所有上传都放在公用文件夹中的一个目录中。
upload按钮在Fancybox实例中调用,并通过fancybox的内联概念从同一页面(admin/images/index)上的隐藏div加载。
所有jquery的功能都很好,上传工作也很好,每个文件都完成了。但是文件并没有被移到文件夹中。在用uploadify.php脚本进行测试时,一切都很好。
控制台中没有错误。
在本地主机上进行了Chrome 6.0.4和Firefox 6.3.6的测试,并通过上传2.1进行了测试
这是我的jquery init代码:(我使用加载器来使用jquery脚本)
Removed to keep post readable
我使用了不同的东西来调用文件,但它们都没有起作用:
Removed to keep post readable
这是我的管理员/图片/上传的代码
Removed to keep post readable
这是我的引导程序中针对cookie问题使用的代码:
Removed to keep post readable
有什么线索吗?我完全迷路了..。
====================================编辑========================================
问题仍然是,我无法到达控制器的行动。为了更容易的测试,我改变了一些东西。当前代码如下:大小写'jpg':$validExtension =真;中断;大小写'jpeg':$validExtension =真;例'png':$validExtension = true;case;我不明白为什么不调用这个动作。
另一个编辑:
当前脚本:
$validExtension =真;$validExtension =真;例'png':$validExtension = true;断开;
创建上传资源时,uploadify.js会在HTTP错误中返回
我尝试了几个在上传论坛上找到的会话解决方案,但是这并没有什么区别.
另一个编辑
我做了更多的工作,并为上传添加了资源
$this->acl->add(新Zend_Acl_Resource('upload'));
提供html输出,它来自not登录/ no角色脚本,指向已知的会话问题。我将尝试几种解决方案,如果脚本有效,我将返回。
发布于 2010-10-14 06:16:41
好吧,我把整件事都修好了。我发现上传必须作为资源添加。闪存会话问题是用一个可以找到这里的插件修复的。
注意:目前只测试本地主机
脚本的外观如下:
The index.phtml
<script type="text/javascript">// <![CDATA[
$(document).ready(function() {
$('#uploaderImages').uploadify({
'uploader' : '../../uploadify/uploadify.swf',
'script' : '<?php echo $this->baseUrl().'/admin/images/upload'; ?>',
'cancelImg' : '../../uploadify/cancel.png',
'scriptAccess' : 'always',
'queueID' : 'fileQueue',
'folder' : '../../uploads/images/original/',
'multi' : true,
'auto' : true,
});
});
// ]]></script>
imageController:
public function uploadAction()
{
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
move_uploaded_file($tempFile,$targetFile);
}
并在ACL中添加资源:
$this->acl->add(new Zend_Acl_Resource('upload'));
如果我遇到更多的问题,或者如果有人这样做,请让我现在,我会更新这个问题/回答与所需的补充信息。
在Firefox 3.6和Chrome 6.0中进行测试
编辑
以上解决方案可在活动服务器上使用,但仅适用于windows。在所有来自mac的浏览器中,数据都不会被发布。我发现了如下所写的修补程序:http://slavi.biz/blog/using-uploadify-with-zend-framework-2009-08-30.html可以在windows和mac上正常工作。
发布于 2010-10-08 16:18:04
据我所发现,我遇到了一些类似的问题,因为swf和upload.php文件不在同一个目录中,目录权限被关闭。
发布于 2010-10-09 22:19:30
我看不出你在哪里禁用视图渲染器。也许这就是问题所在。
如果您已经有了一个名为“上传”或“索引”的视图(基于您的编辑),那么您有布局吗?上传只需要一个字符串作为输出。
因此,您必须在您的操作中添加以下行:
$this->_helper->layout()->disableLayout();
$this->_helper->viewRenderer->setNoRender(true);
如果这不起作用,我建议您在一个没有zend框架的独立页面上进行测试,这样您就可以确切地知道发生了什么。
另外,通过浏览器访问该页面,并告诉我们它是否没有错误(图像/索引或上载)。
最后,我还建议您使用firebug并分析请求。
https://stackoverflow.com/questions/3837318
复制