Загрузка файла Extjs с помощью C#

Я знаю, как работает xtype: filefield, и я также понял, что при загрузке файла не используется обычный метод ajax для чтения и записи данных в базу данных...

Я могу нормально настроить файловое поле, и когда я нажимаю кнопку обзора, я могу выбрать нужный файл.

this.fp = Ext.create('Ext.form.Panel', {
           scope: this,
           width: 200,
           frame: true,
           title: 'File Upload Form',
           autoHeight: true,
           bodyStyle: 'padding: 10px 10px 0 10px;',
           items: [
           {
               xtype: 'filefield'

           }
           ],
           buttons: [
           { text: 'Upload',
               handler: function () {
                   var form = this.up('form').getForm();
                   if (form.isValid()) {
                       form.submit({
                           url: 'Upload.aspx',
                           waitMsg: 'Uploading your file...',

                           success: function (form, action) {

                               alert("OK:" + action.result.message);

                           },
                           failure: function (form, action) {
                               alert("Error:" + action.result.message);
                           }

                       });
                   }
               }
           }
           ]


       });

То, что происходит после нажатия кнопки загрузки, является проблемой... Как мне загрузить файл на сервер... (sql db)... с помощью С#

Я попытался создать страницу upload.aspx с помощью upload.aspx.cs и сделал это, чтобы посмотреть, работает ли она...

public partial class Upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

    HttpContext context = HttpContext.Current;


    if (context.Request.Files.Count > 0)
    {

        BinaryReader file = new BinaryReader(context.Request.Files[0].InputStream);

        string line;
        while ((line = file.ReadString()) != null)
        {

            // sql connection?
        }

    }

    // prepare response
    MessageOb result = new MessageOb();

    result.success = true;

    result.message = "Success";


}
}

Но я получаю эту ошибку

Ext.Error: You're trying to decode an invalid JSON String: 

Кто-нибудь задокументировал, где я могу увидеть обычный шаг для загрузки файла в sql db из extjs на стороне клиента и С# на стороне сервера... или я был бы очень признателен, если бы кто-нибудь мог показать мне, как это делается


person EagleFox    schedule 25.01.2013    source источник


Ответы (1)


Проблема, вероятно, связана с тем, как вы возвращаете данные из отправки формы загрузки. Ext.JS требует, чтобы ответ был JSON или XML, я бы проверил, что вы не возвращаете html-документ.

Я предполагаю, что MessageOb как-то справляется с этим... может быть?

Uncaught Ext.Error: You пытаетесь декодировать недопустимую строку JSON: отправка формы с использованием Ext JS и Spring MVC

person Kaizen Programmer    schedule 25.01.2013
comment
спасибо майкл... я ничего не делаю на стороне extjs во время загрузки... все, что я реализовал, это поле xtype-file, и оно делает свое собственное окно поиска файлов, а при отправке ищет страницу upload.aspx... я потерялся в том, что я должен сделать, чтобы загрузка работала - person EagleFox; 26.01.2013
comment
на самом деле это происходит до того, как запускается page_load ... потому что я только что понял, что независимо от того, что я добавляю в свой файл .cs, я все равно получаю ту же ошибку. - person EagleFox; 28.01.2013
comment
Можете ли вы разобрать форму панели ext js до голых костей и протестировать ее, пока не запустится page_load? - person Kaizen Programmer; 28.01.2013
comment
Спасибо, Michael_B... вы были правы... проблема действительно была в моем файле upload.aspx... Я заставил его работать, используя совершенно другую технику... спасибо - person EagleFox; 30.01.2013
comment
@EagleFox было бы лучше, если бы вы сами дали ответ, чтобы другие, заходящие на эту страницу, получили правильную информацию. - person Jiju Thomas Mathew; 08.02.2017