用的是symfony框架,用jquery上传图片,但是后台接受不到数据。代码和错误提示如下:
<code><div id="progress"> <div class="bar" style="width: 100%"></div> </div> <div> <input id="fileupload" type="file" name="files[]" data-url="imghandle" multiple> </div></code>
<code>$(document).ready(function(){ $("#fileupload").fileupload({ dataType: 'json', done: function (e, data) { $.each(data.result.files, function (index, file) { $('<p></p>').text(file.name).appendTo(document.body); }); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .bar').css( 'width', progress + '%' ); }, done: function (e, data) { $.each(data.result, function (index, file) { $('<p></p>').text(file.name + ' uploaded').appendTo($("body")); }); } }); });</code>
后台代码如下:
<code>$imgPurpose = trim(stripslashes($_POST["files[]"]));</code>
错误提示如下:
Notice: Undefined index: files[]
请问这是怎么回事呢?多谢了。
用的是symfony框架,用jquery上传图片,但是后台接受不到数据。代码和错误提示如下:
<code><div id="progress"> <div class="bar" style="width: 100%"></div> </div> <div> <input id="fileupload" type="file" name="files[]" data-url="imghandle" multiple> </div></code>
<code>$(document).ready(function(){ $("#fileupload").fileupload({ dataType: 'json', done: function (e, data) { $.each(data.result.files, function (index, file) { $('<p></p>').text(file.name).appendTo(document.body); }); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#progress .bar').css( 'width', progress + '%' ); }, done: function (e, data) { $.each(data.result, function (index, file) { $('<p></p>').text(file.name + ' uploaded').appendTo($("body")); }); } }); });</code>
后台代码如下:
<code>$imgPurpose = trim(stripslashes($_POST["files[]"]));</code>
错误提示如下:
Notice: Undefined index: files[]
请问这是怎么回事呢?多谢了。
简单回答你的问题如下:
前提:没用过该
jQuery
插件,因此只考虑后台代码
第一、在表单控件的name
属性值是数组的情况下(末尾加[]
),在用PHP获取该控件提交的内容时,应该省略[]
,因此你的代码应该像下边这样:
<code>$_POST["files"]);</code>
第二、你使用$_POST
全局变量访问files
,得到的结果是一个PHP数组,因此,不能直接使用字符串函数进行处理(这里暂不讨论此处的字符串函数)
第三、你使用的是Symfony
框架,不应该直接访问$_POST
以及其他全局变量!Symfony
的HttpFoundation
组件已经把这些全局变量抽象为OOP
接口了,应该使用Symfony
提供的接口。像下边这样:(假设你的控制器方法如下)
<code>//... use Symfony\Component\HttpFoundation\Request; // ... public function uploadAction(Request $request) { $imgPurpose = $request->get('files'); } // ...</code>
最后,Symfony
的HttpFoundation
组件功能很强大,以下是其官方文档的一些相关链接,如果阅读一遍,会对你使用Symfony
框架有很大帮助。
Symfony与Http基础
HttpFoundation组件文档
备注:和Symfony
相关的问题,请加上Symfony
的标签,这样对Symfony
问题感兴趣的答案作者会更容易看到。(输入内容会自动弹出提示,如下图)