我将使用Blueimp jQuery-File-Upload库的基本版本来上传文件。
在php框架中,这个javascript库依赖于放在“server/php”目录中的php类“index.php”的执行。如tutorial page所示,“操作”必须指向该目录。
在symfony2应用程序中使用这个库时,“server/php”目录应该放在哪里?我应该走哪条路?
在实践中如何让它发挥作用?
PS:我知道有一些symfony2包,比如punkave的“symfony2文件上传包”,但是在教程中我遗漏了一些东西,我不想重复使用symfony2表单。-
最佳答案
我将把jquery插件内容放到web/bundles/<your bundle name>/js/jquery-file-upload
中。然后我将配置脚本(选中Optionsconfig)以在:/bundles/<your bundle name>/js/jquery-file-upload/server/php/index.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>