我正在使用OneupUploaderBundle和jQuery文件上传来上传我的SF2应用程序中的照片。
通过阅读此处的文档:https://github.com/1up-lab/OneupUploaderBundle简单上传正在运行,我上传的每张图片都存储在/ web / uploads / gallery文件夹下,并带有唯一生成的名称(我猜是uniqid())
我想要做的是:根据用户在表单中选择的内容更改文件夹和/或文件名(选择来自选择下拉菜单)。
这需要:
在AJAX通话期间传递数据
在Symfony中检索数据(我按照https://github.com/1up-lab/OneupUploaderBundle/blob/master/Resources/doc/custom_logic.md的建议在PostPersistEvent上使用监听器)
但重点是,我不知道如何获取用户在我的名字中选择的内容或更改上传目录,你能帮帮我吗?
由于
前端JS:
undefined
听众:
<script type="text/javascript">
$(function () {
'use strict';
// Change this to the location of your server-side upload handler:
var url = '{{ oneup_uploader_endpoint('gallery') }}';
$('#fileupload').fileupload({
url: url,
dataType: 'html',
done: function (e, data) {
console.log(data);
$.each(data.result.files, function (index, file) {
$('<p/>').text(file.name).appendTo('#files');
});
},
progressall: function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$('#progress .progress-bar').css(
'width',
progress + '%'
);
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
答案 0 :(得分:0)
您可以创建一个custom namer,它不仅可用于命名文件,还可用于创建动态文件夹结构。请查看跟踪器中的this issue。
namespace AppBundle\Uploader\Naming;
use Oneup\UploaderBundle\Uploader\File\FileInterface;
use Oneup\UploaderBundle\Uploader\Naming\NamerInterface;
class CatNamer implements NamerInterface
{
public function name(FileInterface $file)
{
$product = //...
return sprintf('%d/%s', $product->getId(), grumpycat.jpg);
}
}
由于这是一项服务,您可以添加request_stack
作为参数,并根据用户提交的选项创建目录结构。