使用 ajax 和 Symfony2 上传文件
Posted
技术标签:
【中文标题】使用 ajax 和 Symfony2 上传文件【英文标题】:Upload files with ajax and Symfony2 【发布时间】:2015-09-18 07:12:04 【问题描述】:我在通过 ajax 将文件从表单上传到 Symfony2 控制器时遇到问题。
这是我的客户端表单:
var uploadFile = function()
var content = "<form id='uploadFile' enctype='multipart/form-data' action='' method='post'>" +
"<input id='file' type='file'/>" +
"</form>";
$("#upload-dialog").html(content);
$("#upload-dialog").dialog(
resizable: false,
title: 'Dodaj załączniki do umowy',
height: 300,
width: 450,
buttons: [
text: 'Wyślij',
click: function()
var formData = new FormData();
formData.append('file', document.getElementById('file').files[0]);
$.ajax(
url: Routing.generate('employees_upload_attachment'),
data: formData,
enctype: 'multipart/form-data',
processData: false,
contentType: false,
success: function()
,
error: function()
);
]
);
;
这是我的控制器
public function uploadAttachmentAction(Request $request)
$fileBag = $request->files;
var_dump($fileBag);
当我尝试显示上传的文件时,我得到一个空的 FileBag 对象:
对象(Symfony\Component\HttpFoundation\FileBag)#12 (1) ["参数":protected]=> 数组(0)
可能出了什么问题?
编辑: 我解决了。我添加到 jquery ajax 参数中
缓存:false,类型:'POST'
一切正常:)
【问题讨论】:
你试过记录document.getElementById('file').files[0]
的值吗?
是的,看起来不错。
我解决了这个问题。我添加到 ajax 参数:缓存:false 和类型:'POST'。现在一切正常:)
我正在尝试类似的方法,但是通过验证表单,以确保我的数据的完整性,可以帮助我吗? my question
@math 请回答您自己的问题,或将其删除。它仍然显示在“未答复”部分。谢谢
【参考方案1】:
添加ajax参数:
cache: false,
type: 'POST'
问题已解决。
注意:答案基于评论而不是我的评论,因为它显示在“未回答”部分。
【讨论】:
以上是关于使用 ajax 和 Symfony2 上传文件的主要内容,如果未能解决你的问题,请参考以下文章