symfony上传文件而不保存在服务器上

时间:2017-07-13 14:08:04

标签: php symfony file-upload

我正在使用 symfony ,我尝试导入csv文件以获取内容。 首先,我将字段importFile添加到我的实体(ps:该字段不应存储在DB中):

  /** @var  UploadedFile  $importFile*/
private $importFile;

/**
 * @return UploadedFile
 */
public function getImportFile()
{
    return $this->importFile;
}

/**
 * @param UploadedFile $importFile
 */
public function setImportFile(UploadedFile $importFile = null)
{
    $this->importFile = $importFile;
}

然后我将该字段添加到我的formType:

   ->add('importFile',FileType::class, array('label' => false,'attr'=>['id'=>'upload','style'=>'']))

在我看来,我找到了表单字段:   {{form_row(form.importFile)}}

- 修改

我在我的视图中获取了上传文件,但是当我使用ajax提交表单时: - edit2

var form = $("[id^=" + "form" + "]");
$.ajax({
        url: url,
        type: 'POST',

        data: new FormData(form),
        contentType: false,
        cache: false,
        processData:false,
        success: function (data, status)
        {
          alert('rr');
        },
        error: function (xhr, desc, err)
        {


        }
    });

我没有按要求获得导入的文件:

dump($request->files->all());

它返回空。

我该怎么做才能阅读该文件?

2 个答案:

答案 0 :(得分:1)

文件输入不是由jQuery的.serialize()方法序列化的。如果需要通过AJAX将文件数据发送到服务器,则必须采用其他方法。

有几种选择:

  1. 如果目标受众的浏览器支持FormData
  2. ,请使用File API
  3. 使用像jquery-form这样可以处理文件上传的jQuery插件。

答案 1 :(得分:0)

Symfony 4为此提供了开箱即用的解决方案。 尝试使用FormData上传文件。