2012-03-27 4 views
1

Я пытаюсь выполнить загрузку файла с использованием JQuery и C#, но у меня много проблем. Я не могу понять, как загрузить файл. Он отлично работает, если я использую FileUpload, но я разрешаю пользователю динамически добавлять файлы, поэтому я использую JQuery (ajax post для другого файла) для обработки файла. Сначала я получал ошибку POST и enctype, но теперь это просто ничего не делает. Firebug показывает мне, что код ajax терпит неудачу, но не говорит мне ничего другого.Загрузка нескольких файлов с использованием JQuery и C#

Вот мой JQuery:

function AddDocumentsDatabase() { 
    $('input:file').each(function (index) { 
     var fileName = $(this).val(); 

     $.ajax(
     { 
      type: "POST", 
      url: "../ajaxURLs/InsertDocument.aspx?requestNumber=" + reqNum + "&fileName=" + fileName, 
      contentType: 'multipart/form-data', 
      cache: false, 
      success: function (html) { 
       alert("File Inserted!") 
      } 
     } 
     ); 
    }); 
} 

А вот код InsertDocument.aspx:

RequestDB db = new RequestDB(); 
    ApplicationFunctions app = new ApplicationFunctions(); 

    protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Write("Hello"); 
    foreach (string key in Request.Form) 
    { 
     if (!key.StartsWith("fleBrowse")) continue; 
     { 
      Response.Write(Request.Form[key].GetType()); 
     } 

    } 
} 

Если это что-то очень просто, я извиняюсь, мой разум не работает в полном объеме скорость, прямо сейчас. Любые предложения приветствуются.

+3

Реализация вашего собственный асинхронный FileUpload - огромная задача, в зависимости от поддержки браузера (HTML5, Flash, ...) Вы должны проверить существующие реализации. Я вполне доволен plupload: http://www.plupload.com/ – jbl

+1

Согласен - не нужно заново изобретать это колесо. Тем более, что jQuery не имеет встроенных функций для фактического размещения содержимого выбранного файла на сервере - код, который вы опубликовали выше, отправит имя файла, но не сам файл, поэтому ваш сервер не сможет выполнить много остроумия. – Dave

ответ

2

Я согласен с shawleigh17; это большая работа, и другие сделали это хорошо. Я использовал jQuery FileUpload (http://blueimp.github.com/jQuery-File-Upload/) с большим успехом. Тем не менее, если вы хотите, чтобы попытаться выполнить отладку кода, попробуйте добавить функцию ошибок к вашему AJAX вызова для отладки:

$.ajax(
{ 
    type: "POST", 
    url: "../ajaxURLs/InsertDocument.aspx?requestNumber=" + reqNum + "&fileName=" + fileName, 
    contentType: 'multipart/form-data', 
    cache: false, 
    success: function (html) { 
    alert("File Inserted!") 
    }, 
    error(jqXHR, textStatus, errorThrown) { 
    alert("Error: " + textStatus + ": " + errorThrown); 
    } 
});