2013-11-14 80 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

相關問題