2013-06-20 5 views
5

Моего ExtJS кода как http://www.objis.com/formationextjs/lib/extjs-4.0.0/docs/api/Ext.form.field.File.htmlExtjs - загрузить файл с помощью FileField

Ext.create('Ext.form.Panel', { 
    title: 'Upload a Photo', 
    width: 400, 
    bodyPadding: 10, 
    frame: true, 
    renderTo: Ext.getBody(),  
    items: [{ 
     xtype: 'filefield', 
     name: 'photo', 
     fieldLabel: 'Photo', 
     labelWidth: 50, 
     msgTarget: 'side', 
     allowBlank: false, 
     anchor: '100%', 
     buttonText: 'Select Photo...' 
    }], 

    buttons: [{ 
     text: 'Upload', 
     handler: function() { 
      var form = this.up('form').getForm(); 
      if(form.isValid()){ 
       form.submit({ 
        url: 'photo-upload.php', 
        waitMsg: 'Uploading your photo...', 
        success: function(fp, o) { 
         Ext.Msg.alert('Success', 'Your photo "' + o.result.file + '" has been uploaded.'); 
        } 
       }); 
      } 
     } 
    }] 
}); 

моих фото-upload.php файла

echo "{success:true}"; 

Но когда успех o.result.file показать неопределенного. Я думаю, что он покажет имя файла после успеха.
Как я могу сделать это показать имя файла после успеха благодаря

ответ

1

Вы просто возвращаются "{success:true}", которые даже не в силе JSON, но ожидать, ExtJS, чтобы предоставить вам еще больше данных?

Попробуйте вернуть JSON как

{ "success": true, "file": "filename" } 

так что есть файл свойств в результате чего клиент может прочитать.

+0

благодарит и, он работает – freestyle

+0

@freestyle Добро пожаловать;) – sra

+0

я сделал это: $ результат = массив ('успех' => 'истинный', 'файл' => 'filename.ext'); \t \t \t $ x = json_encode ($ result); echo $ x; – frazras

0

просто верните правильную конструкцию json для eval в переднем конце.

Чтобы отобразить имя файла как сообщение, вам не нужно возвращать значение из бэкэнд, уже имеющееся у вас. см. ниже код

var fileUploadComp = // например: Ext.getCmp ('DictUploadField'); var fileName = fileUploadComp.getValue();

это fileName в вашем сообщении.

Спасибо.

0

Примечание: тип ответа сервера должен быть «text/html».

return Json(new { 
    success = true, 
    msg = "Your file has been uploaded" 
}, "text/html"); 

Живая демо here