jQuery Form загрузить файл проверить файл на сервере и генерировать ошибки для передачи клиенту - PullRequest
0 голосов
/ 10 июля 2011

Я использую jQuery.Form для загрузки файлов на сервер.Вот пример, который я использую http://aspzone.com/tech/jquery-file-upload-in-asp-net-mvc-without-using-flash/

Я хочу проверить файл на сервере для NULL и для расширения,

public FileUploadJsonResult UploadSubscriptions(HttpPostedFileBase file)
        {
            if (file == null)
                return new FileUploadJsonResult { Data = new { message = string.Format(" Error uploading file. Choose the file") } }; 

            if(Path.GetExtension(file.FileName).ToLower() != "csv")
                return new FileUploadJsonResult { Data = new { message = string.Format("{0} Error uploading file. Invalid extension.", System.IO.Path.GetFileName(file.FileName)) } }; 

            //Doing the thing here...

            return new FileUploadJsonResult { Data = new { message = string.Format("{0} uploaded successfully.", System.IO.Path.GetFileName(file.FileName)) } }; 
        }

, но во всех случаях, если я верну FileUploadJsonResultна клиенте это будет успешный результат, будет выполнена функция success:

success: function (result) {
                //debugger;
                $("#ajaxUploadForm").unblock();
                $("#ajaxUploadForm").resetForm();
                $.growlUI(null, result.message);
            },
            error: function (xhr, textStatus, errorThrown) {
                $("#ajaxUploadForm").unblock();
                $("#ajaxUploadForm").resetForm();
                $.growlUI(null, 'Error uploading file. Try again later');

                $('div.growlUI').css("background", "url(attention48.png) no-repeat 10px 10px");
            }

В таком случае я могу отредактировать функцию 'success', чтобы поставить условия для проверки result.message, а затем отобразить growlUI с ошибкой, но я бы скорее сгенерировал ошибку на сервере для выполнения клиентской функции error Как я могу это сделать?

ОБНОВЛЕНИЕ:

вот моя модификация функции 'success'для обработки ошибок:

success: function (result) {
                //debugger;
                $("#ajaxUploadForm").unblock();
                $("#ajaxUploadForm").resetForm();

                $.growlUI(null, result.message);

                if (result.message.indexOf("Error") != -1)
                    $('div.growlUI').css("background", "url(attention48.png) no-repeat 10px 10px");
            },

1 Ответ

0 голосов
/ 10 июля 2011

Success и error относятся к звонку, который вы делаете на сервер. Ошибка в том, что адрес недоступен или есть проблемы с подключением, это не связано с логикой вашего приложения. Вы должны обрабатывать ошибки в потоке вашего приложения (например, недопустимое расширение) с помощью условных сообщений и поведения в функции успеха, потому что в самом вызове проблем не было. По крайней мере, я так думаю.

...