Symfony2 和 Blueimp jQuery-File-Upload:在哪里设置“server/php”目录

Posted

技术标签:

【中文标题】Symfony2 和 Blueimp jQuery-File-Upload:在哪里设置“server/php”目录【英文标题】:Symfony2 and Blueimp jQuery-File-Upload: where to set the "server/php" directory 【发布时间】:2012-08-19 05:44:08 【问题描述】:

我将使用Blueimp jQuery-File-Upload 库的基本版本进行文件上传。 在 php 框架中,这个 javascript 库依赖于 PHP 类“index.php”的执行,该类位于“server/php”目录中。如tutorial page 所示,“动作”必须指向该目录。

当在 Symfony2 应用程序中使用这个库时,“server/php”目录应该放在哪里我应该使用哪条路径? 在实践中如何让它发挥作用?

PS:我知道有一些 Symfony2 捆绑包,例如 Punkave 的“symfony2-file-uploader-bundle”,但是教程中有一些东西我遗漏了,我不想重复使用 Symfony2表格-

【问题讨论】:

【参考方案1】:

我会将 jquery 插件内容放入web/bundles/<your bundle name>/js/jquery-file-upload。然后我会配置脚本(检查Options config)以查找index.php 文件:/bundles/<your bundle name>/js/jquery-file-upload/server/php/index.php

当然,您必须修改 index.php 文件以检查用户是否已登录以及他是否具有正确的权限。

例如,这是我在测试环境中所做的:

我在控制器中添加了这个动作:

/**
 * @Route("/test/jquery-file-upload")
 * @Template("<your bundle name>:Default:test-jquery-file-upload.html.twig")
 */
public function testJqueryFileUploadAction()

    return array();

我创建了这个模板:

<input id="fileupload" type="file" name="files[]" data-url=" asset('bundles/<your bundle name>/jquery-file-upload/server/php/index.php') " multiple>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script src=" asset('bundles/<your bundle name>/jquery-file-upload/js/vendor/jquery.ui.widget.js') "></script>
<script src=" asset('bundles/<your bundle name>/jquery-file-upload/js/jquery.iframe-transport.js') "></script>
<script src=" asset('bundles/<your bundle name>/jquery-file-upload/js/jquery.fileupload.js') "></script>
<script>
$(function () 
    $('#fileupload').fileupload(
        dataType: 'json',
        done: function (e, data) 
            $.each(data.result, function (index, file) 
                $('<p/>').text(file.name).appendTo(document.body);
            );
        
    );
);
</script>

【讨论】:

您说“我将配置脚本以在以下位置查找 index.php 文件:web/bundles//js/jquery-file-upload/server/php/index.php。 ”。但是,js 库中没有对路径 server/php 的引用。不是吗? 我已经编辑了答案,因为路径没有在我编写它们时呈现,并添加了指向插件选项文档的链接。您可以通过 jquery 插件的 url 选项设置 index.php 文件的路径。 另一种可能的方式是创建一个使用此插件的 Symfony 2 字段类,以便您可以轻松地以任何形式使用它。但我从你的问题中了解到,你不想走那条路。 您是否尝试过您提出的解决方案?我猜我应该配置的脚本是网页中的 Javascript 代码(在我的例子中是一个树枝模板)。正如您提议的那样,它应该指向 index.php 类,并且一切都应该正常工作。然而,事实并非如此!我还猜想检查用户是否已登录不是必需的(除了安全考虑)。 好吧。它完美地工作。它也适用于您的第一个答案。只是它在我的页面中不起作用,它在一个新项目中起作用。也许我的一些 Javascript 库与 Blueimp 有冲突)。非常感谢您的有用回答。

以上是关于Symfony2 和 Blueimp jQuery-File-Upload:在哪里设置“server/php”目录的主要内容,如果未能解决你的问题,请参考以下文章

blueimp/jQuery-File-Upload 与 Laravel 如何集成?

JQuery-File-Upload BlueImp文件上传EXIF方向旋转

通过 https 上传多个文件时 blueimp jquery 文件上传挂起

如何在 ASP.NET 中实现 Blueimp jQuery 文件上传

blueimp 的 jQuery-File-Upload - 附加标头

maxNumberOfFiles 在 blueimp jQuery 文件上传中无法正常工作