Вопрос

Я создаю веб-приложение с использованием Grails, которое использует много ajax. Я хочу осуществить загрузку файлов с помощью ajax. Я не знаю, как использовать ajax для загрузки файлов. Мой пример кода GSP:

<!-- code for file upload form-->
<div id="updateArea">

</div>

Я пытался и. После загрузки я хочу обновить 'updateArea' с результатом. В результате я планирую показать детали загруженного файла.

Это было полезно?

Решение

Загрузка файла через Ajax на самом деле невозможна. Вы по-прежнему можете загружать файл в фоновом режиме, используя скрытый iframe, и либо оценивать ответ (который затем находится внутри iframe), либо запускать другой вызов ajax после завершения загрузки.

<g:form name="upload-form" action="upload" method="post" enctype="multipart/form-data" target="hidden-upload-frame">
    File: <input type="file" name="myFile" />
    <button type="submit">Upload</button>
</g:form>

<iframe id="hidden-upload-frame" name="hidden-upload-frame" style="display: none" onload="onUploadComplete">
</iframe>

<script type="text/javascript">
    function onUploadComplete(e) {
        // Handle upload complete
        alert("upload complete");
        // Evaluate iframe content or fire another ajax call to get the details for the previously uploaded file
    }
</script>

Другой вариант - использовать механизм загрузки на основе флэш-памяти (например, swfupload ) вместо iframe.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top