在symfony中用jquery-fileupload接收数据的问题

WBOY
Release: 2016-06-06 20:09:33
Original
872 people have browsed it

用的是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>
Copy after login
Copy after login
<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>
Copy after login
Copy after login

后台代码如下:

<code>$imgPurpose = trim(stripslashes($_POST["files[]"]));</code>
Copy after login
Copy after login

错误提示如下:
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>
Copy after login
Copy after login
<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>
Copy after login
Copy after login

后台代码如下:

<code>$imgPurpose = trim(stripslashes($_POST["files[]"]));</code>
Copy after login
Copy after login

错误提示如下:
Notice: Undefined index: files[]
请问这是怎么回事呢?多谢了。

简单回答你的问题如下:

前提:没用过该jQuery插件,因此只考虑后台代码

第一、在表单控件的name属性值是数组的情况下(末尾加[]),在用PHP获取该控件提交的内容时,应该省略[],因此你的代码应该像下边这样:

<code>$_POST["files"]);</code>
Copy after login

第二、你使用$_POST全局变量访问files,得到的结果是一个PHP数组,因此,不能直接使用字符串函数进行处理(这里暂不讨论此处的字符串函数)

第三、你使用的是Symfony框架,不应该直接访问$_POST以及其他全局变量!SymfonyHttpFoundation组件已经把这些全局变量抽象为OOP接口了,应该使用Symfony提供的接口。像下边这样:(假设你的控制器方法如下)

<code>//...

use Symfony\Component\HttpFoundation\Request;

// ...

public function uploadAction(Request $request)
{
    $imgPurpose = $request->get('files');
}

// ...</code>
Copy after login

最后,SymfonyHttpFoundation组件功能很强大,以下是其官方文档的一些相关链接,如果阅读一遍,会对你使用Symfony框架有很大帮助。

  1. Symfony与Http基础

  2. HttpFoundation组件文档

备注:和Symfony相关的问题,请加上Symfony的标签,这样对Symfony问题感兴趣的答案作者会更容易看到。(输入内容会自动弹出提示,如下图)
在symfony中用jquery-fileupload接收数据的问题

Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!