如何将从Sencha Touch应用程序上传的文件传递给php?

时间:2013-11-14 18:53:31

标签: php extjs sencha-touch sencha-touch-2

我正在使用Sencha Touch + PHP构建应用程序。

在Sencha Touch中我做了这样的表格:

    xtype: 'fieldset',
    items: [
        {
            xtype: 'textfield',
            id: 'ctTitle',
            name: 'title',
            label: 'Title'
        },
        {
            xtype: 'filefield',
            id: 'ctFile',
            name: 'filePdf',
            label: 'File'
        }   
    ]

在我的Controller中有一个向php提交文件的功能:

onBtnSaveFile: function(){

    Ext.Ajax.request({
        url: 'app-resources/scripts/saveArticle.php',

        headers: {
            "Content-Type": "multipart/form-data"
        },

        params: {
            title: Ext.getCmp('ctTitle').getValue(),
            filePdf: Ext.getCmp('ctFile').getValue()
        },

        callback: function(options, success, response) {
            console.log(response.responseText);
        }

    });

},

现在在saveArticle.php中,我使用$ _FILES来查看上传文件的大小:

$pdf = $_FILES['filePdf'];

此行正在收到错误未定义索引:filePdf

我认为AJAX请求中的params没有发送正确的数据,也许它发送的是普通字符串而不是文件。

有人可以帮我解决这个问题吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我对Sencha不是很熟悉,但就我而言,我知道当你发送一个带有POST方法的表单时,你必须以某种方式对这些数据进行编码才能发送文件。有没有办法将以下属性添加到表单中?:

enctype='multipart/form-data'

通过这种方式,您可以以正确的方式对数据进行编码,以便php了解并能够从$ _FILES中读取文件。

希望这可以帮助您解决问题。