HttpPostedFile в процессе выгрузки файлов равен NULL, если я использую AJAX - PullRequest
2 голосов
/ 09 октября 2010

Я использую функцию загрузки файлов в моем проекте asp.net MVC.Он работал прекрасно, пока я не начал использовать некоторые функции AJAX на своей странице.

HttpPostedFile всегда равен NULL на странице Ajax.

Как можно решить эту проблему вместе с вызовом ajax на моей странице?

Ответы [ 3 ]

5 голосов
/ 09 октября 2010

Поскольку вы не можете загружать файлы с помощью AJAX, я бы порекомендовал вам отличный плагин jquery form , который позволяет вам изменять форму и поддерживает загрузки файлов .За кулисами плагин генерирует скрытый iframe для обработки загрузки и полностью прозрачен для вас:

<form id="myForm" action="/home/upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" id="file" />
    <input type="submit" value="upload" />
</form>

Контроллер:

[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
    // TODO: handle the file here
    return PartialView("success");
}

И, наконец, откорректируйте форму:

$(function() {
    $('#myForm').ajaxForm(function(result) {
        alert('thank you for uploading');
    });
});

Также обратите внимание на использование HttpPostedFileBase вместо HttpPostedFile в действии контроллера.Будучи абстрактным классом, это упростит ваши юнит-тесты.

0 голосов
/ 09 октября 2010

XHR не может подать сообщение.

Для загрузки файла Asnc используйте iframe или некоторую библиотеку.

0 голосов
/ 09 октября 2010

Невозможно опубликовать загрузку файла с помощью ajax, если вы не перепрыгнете через некоторые обручи - например, отправку сабвуфера из IFrame или с помощью одного из решений на основе Flash. Смотри https://stackoverflow.com/questions/254831/asp-net-free-ajax-file-upload-control

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...