Обработка ExtJs 'fileuploadfield' на сервере с использованием ASP.NET MVC? - PullRequest
2 голосов
/ 28 марта 2011

У меня есть простая панель форм ExtJs, которая содержит поле загрузки файла.Когда я отправляю форму на сервер, все значения формы значения ключа отправляются на сервер, но не пара значений ключа для поля загрузки файла.Кто-нибудь знает, почему это?(Я приложил некоторые фрагменты кода ниже)

Также, как мне обработать загрузку на сервер.т.е. я хочу загрузить изображение на сервер, обработать его и сохранить где-нибудь на сервере?

public JsonResult SetEmployeeDetails(string firstname, string photopath)
    {
        GetData data = delegate
        {
            return Repo.SetEmployeeDetails(firstname, photopath);
        };
        JsonResultBase jsonResult = GetJsonResult(data);
        JsonResult json = PortalJsonResult(jsonResult, JsonRequestBehavior.AllowGet);
        return json;
    }



xtype: 'form',
title: 'Employee Setup',
items: [{
            fieldLabel: 'Firstname',
            xtype: 'textfield',
            name: 'firstname',
            maxLength: 10,
            allowBlank:false
        },
        {
            xtype: 'fileuploadfield',
            id: 'form-file',
            emptyText: 'Select an image',
            fieldLabel: 'Photo',
            name: 'photopath',
            buttonText: '',
            buttonCfg: {
                iconCls: 'upload-icon'
            }
        }],
buttons: [{
    text: 'Save',
    scope: this,
    handler: function(){
        var form = this.items.items[0].getForm();
        if(form.isValid()){
            form.submit({
                url: 'EmployeeDetails/SetEmployeeDetails',
                waitMsg: 'Saving your details...',
                success: function(fp, o){
                    msg('Success', 'Processed file on the server');
                }
            });
        }
    }
}]

Ответы [ 2 ]

4 голосов
/ 29 марта 2011

Невозможно получить параметры метода файла.Итак, ваша переменная photopath обычно будет нулевой.Чтобы получить доступ к загруженному файлу, вы можете сделать следующее:

HttpPostedFileBase postedFile = Request.Files["fileinput"];
if (postedFile != null)
{
   //process the file content using postedFile.InputStream...
}

И в javascript необходимо добавить fileUpload: true, в конфигурацию формы, чтобы ExtJS знал, что вы загружаете файл в форму.

1 голос
/ 03 июня 2011

Была похожая проблема.Выяснилось, что вам нужно установить тип контента "text / html" на странице, которая обрабатывает загрузку файла.:-(

Response.ContentType = "text/html";

Если вы прочитаете документацию для Ext.data.Connection, вы увидите, что

Ответ сервера анализируетсябраузер для создания документа для IFRAME. Если сервер использует JSON для отправки возвращаемого объекта, то заголовок Content-Type должен быть установлен на «text / html», чтобы указать браузеру вставлять текст без изменений в документ.body.

Мне потребовалось некоторое время, чтобы найти это, но когда я натолкнулся на ваш вопрос, кто-то другой мог бы сделать с такой же проблемой!

надеюсь, это поможет им!

...