2013-11-14 43 views
0

我正在使用Sencha Touch + PHP构建应用程序。如何将从Sencha Touch应用程序上传的文件传递给php?

在煎茶触摸我做了这个形式:

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

在我的控制器有提交文件的PHP函数:在saveArticle.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); 
     } 

    }); 

}, 

现在,我使用$ _FILES查看上传文件的大小:

$pdf = $_FILES['filePdf']; 

bu此行发生错误未定义的索引:filePdf

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

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

谢谢!

+0

您是否试过$ pdf = $ _FILES ['ctFile']; – Hackerman

+0

不需要ctFile是一个组件的ID而不是参数。 –

+0

如果你做了一个var_dump($ _ FILES); ?? – Hackerman

回答

1

我对Sencha并不是很熟悉,但就我而言,我知道当您使用POST方法发送表单时,必须以某种方式编码数据以便文件发送。有没有办法下列属性添加到您的形式?:

enctype='multipart/form-data' 

这样,你在一个PHP将了解并能够从$ _FILES读取文件有道编码数据。

希望这能帮助你解决问题。

+0

我会马上搜索它。谢谢你提醒我。 –

+0

我想我找到了一种方法把标题放在AJAX请求中,但我得到这个错误:缺少多部分/表单数据POST数据的边界。你知道是什么原因导致这个错误? –

+0

你能告诉我你设置标题的方式吗? – taxicala

相关问题