2

我一直在尝试这个,但我很困惑,因为我是 Symfony Events 和其他东西的新手。

这是我到目前为止的地方:

  • 作曲家捆绑安装
  • AppKernel.php、routing.yml、services.yml、config.yml、UploadListener.php文件修改

它有效,我放置的文件实际上正在上传到文件夹,并且状态栏正在填充......但我需要别的东西:

  1. 不知何故,我需要与文件一起发布(并读取)项目 ID(整数)(或者能够在将文件复制到输出文件夹时设置文件名)
  2. 如果上传出现问题,我该如何发回错误消息?
  3. 在示例(jQuery-File-Uploader)中,代码返回上传文件的文件名,我的代码没有这样做,我的意思是代码在那里,但它不起作用

我正在发布我拥有的代码。

HTML 代码(这是我调用 jQuery-File-Upload 的部分

<tr>
                    <td>{{ clienteCorporativo.nombreComercial|upper }}</td>
                    <td>{% if clienteCorporativo.afiliadosUploads|length == 0 %}Nunca{% else %}{{ (clienteCorporativo.afiliadosUploads|last).fecha|date('d/mmm/y') }}{% endif %}</td>
                    <td>
                        {% if clienteCorporativo.formatoExcelAfiliados == null %}
                            <span class="btn btn-success fileinput-button">
                                <i class="glyphicon glyphicon-upload"></i>&nbsp;&nbsp;&nbsp;
                                <span>Seleccionar Excel</span>
                                <input id="fileupload_{{ clienteCorporativo.id }}" class="fileupload" data-id="{{ clienteCorporativo.id }}" type="file" name="files[]" multiple>
                            </span>
                            {#<span style="color: #8c8c8c"><span class="glyphicon glyphicon-upload"></span>&nbsp; Seleccionar Excel &nbsp;&nbsp;&nbsp;</span>#}
                        {% else %}
                            <input id="fileupload_{{ clienteCorporativo.id }}" class="fileupload" type="file" name="files[]" data-url="{{ oneup_uploader_endpoint('gallery') }}" />
                            {#<a role="button" data-toggle="modal" data-target="#myModal" data-operation="loadOne" data-id="{{ clienteCorporativo.id }}"><span class="glyphicon glyphicon-upload"></span>&nbsp; Seleccionar Excel</a> &nbsp;&nbsp;&nbsp;#}
                        {% endif %}
                        <a role="button" data-toggle="modal" data-target="#myModal" data-operation="defineFormat" data-id="{{ clienteCorporativo.id }}"><span class="glyphicon glyphicon-list-alt"></span>&nbsp; Definir Formato</a> &nbsp;&nbsp;&nbsp;
                        {% if clienteCorporativo.afiliadosUploads|length == 0 %}
                            <span style="color: #8c8c8c"><span class="glyphicon glyphicon-repeat"></span>&nbsp; Revertir Última Carga &nbsp;&nbsp;&nbsp;</span>
                        {% else %}
                            <a role="button" data-toggle="modal" data-target="#myModal" data-operation="undoLast" data-id="{{ clienteCorporativo.id }}"><span class="glyphicon glyphicon-repeat"></span>&nbsp; Revertir Última Carga</a> &nbsp;&nbsp;&nbsp;
                        {% endif %}
                    </td>
                    <td>
                        <div id="progress_{{ clienteCorporativo.id }}" class="progress text-center">
                            <div class="progress-bar progress-bar-success">
                                <span id="files_{{ clienteCorporativo.id }}"></span>
                            </div>
                        </div>
                    </td>
                </tr>

js 脚本(“每个”句子什么都不做)

<script>
    /*jslint unparam: true */
    /*global window, $ */
    var idFile = 0;
    $(function () {
        'use strict';
        // Change this to the location of your server-side upload handler:
        $('.fileupload').fileupload({
            url: '{{ oneup_uploader_endpoint('xlsfile') }}',
            dataType: 'json',
            done: function (e, data) {
                var eventTrigger = $(this)
                idFile = eventTrigger.data('id')
                $.each(data.result.files, function (index, file) {
                    $('#files_'+idFile).html(file.name);
                });
            },
            progressall: function (e, data) {
                var eventTrigger = $(this)
                idFile = eventTrigger.data('id')
                var progress = parseInt(data.loaded / data.total * 100, 10);
                $('#progress_'+idFile+' .progress-bar').css(
                        'width',
                        progress + '%'
                );
            },
            formData: [ {"id":idFile} ]
        }).prop('disabled', !$.support.fileInput)
                .parent().addClass($.support.fileInput ? undefined : 'disabled');
        //
    });
</script>

其他文件(AppKernel.php、routing.yml、services.yml、config.yml、UploadListener.php)就像 OneUploaderBundle 文档说的那样(我已经改变了一些东西然后回滚,因为我没有得到结果我预期的)。我想我咀嚼的更多,我可以吞下这个......

4

1 回答 1

1

您的表单字段将与文件上传一起发布。或者,您可以在构造函数中使用该form_data: {}选项。$('#myFile').fileUploader()但它会默认提交您的表单字段,您可以以通常的方式处理这些字段。

$('#myFile').fileupload({
    dataType: 'json',
    formData: {
        'file_id': 1
    },

您必须在 UploadListener 中制作自己的返回响应。然后在前端(Javascript)解析结果。

$response = $event->getResponse();
$response['success'] = true;
$response['files'] = [
    'file' => [
        'name' => $event->getFile()->getPathname()
    ]
];
return $response;
于 2017-08-16T14:19:33.490 回答