2013-11-21 2 views
1

У меня есть входной контроль HTML5, который, позволяющий конечный пользователь загрузить файл .csv:Отображение ответа сервера после загрузки файла на сервер

<input id="ImportFile" type="file" name="ImportFile" data-val="true" data-val-required="Please select a file" title="Browse for a file to upload" /> 

Это красиво размещенный в форме, которая позволяет мне представить загруженные данные на сервер:

verify: function() { 

    // Run form validate to style controls if they're invalid. 
    var isValid = this.form.valid(); 

    if (isValid) { 
     this.isVerifyInput.val(true); 
     this.form.submit(); 
     this.isVerifyInput.val(false); 
    } 
} 

Во время проверки, сервер должен иметь возможность информировать пользователя об ошибках, с которыми столкнулись при проверке их закачанный файл.

Таким образом, моя форма цели скрытый IFRAME, который потребляет действие представить Страница обновления:

<form action="/csweb/Component/ImportComponents" enctype="multipart/form-data" id="ImportComponentsForm" method="post" name="ImportComponentsForm" target="UploadTarget"> 
    <input data-val="true" data-val-required="The IsVerify field is required." id="IsVerify" name="IsVerify" type="hidden" value="false" class="valid"> 
    <input id="ImportFile" type="file" name="ImportFile" data-val="true" data-val-required="Please select a file" title="Browse for a file to upload" class="valid"> 
</form> 

<iframe id="UploadTarget" name="UploadTarget" class="uploadTarget"></iframe> 

Где я потом уведомлен об отправке завершения:

this.$el.find('iframe.uploadTarget').load(this.onUploadComplete.bind(this)); 

Это не потому что у меня нет никакого способа прочитать ответ сервера после отправки формы, конечно.

Однако я немного смущен. Статьи по StackOverflow относительно этого вопроса свидетельствуют о сериализации данных формы:

Насколько мне известно - это не возможно сериализовать загруженные данные и отправить его на сервер. Я понимаю, что загруженные данные должны быть отправлены через form.submit. Это верно?

Если да, то как я могу подтвердить проверку загруженного содержимого на стороне сервера? Казалось бы, мой единственный вариант - отправить форму, временно записать информационную серверную сторону, дождаться события загрузки iframe и затем выдать на сервер запрос GET для извлечения любых потенциальных сообщений. Это мой единственный вариант?

+0

Загрузка файлов боль .. Другой вариант заключается в использовании [FormData] (https://developer.mozilla.org/ en-US/docs/Web/Guide/Using_FormData_Objects) для отправки сообщения формы асинхронно ... но FormData не поддерживается adamb

+0

Я посмотрю на jQuery FileUpload, спасибо. Мне нужно поддерживать IE8 +. –

ответ

Смежные вопросы