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

WBOY
リリース: 2016-06-06 20:09:33
オリジナル
873 人が閲覧しました

用的是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以及其他全局变量!SymfonyHttpFoundation组件已经把这些全局变量抽象为OOP接口了,应该使用Symfony提供的接口。像下边这样:(假设你的控制器方法如下)

<code>//...

use Symfony\Component\HttpFoundation\Request;

// ...

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

// ...</code>
ログイン後にコピー

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

  1. Symfony与Http基础

  2. HttpFoundation组件文档

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

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!