ajax表格在grails文件中冻结提交

时间:2016-02-29 05:12:55

标签: jquery ajax grails ajaxform

我尝试使用AjaxForm在grails app中异步提交文件。对于小文件,它工作得很好,但是当我尝试使用大文件时,ajaxForm永远不会触发函数错误或成功。在这两种情况下(大文件和小文件),所有文件都成功存储在服务器端。这是我的代码:

var opts = {

            beforeSubmit:   AntesEnvio,
            error:          ErrorEnvio,
            uploadProgress: ProgresoEnvio,
            success:        CorrectoEnvio

        }

$('div#modal-cargar-ficheros .upload-form').ajaxForm(opts)

function CorrectoEnvio(){

            do somethings ...

        }
function ErrorEnvio(){

            do somethings ...

        }

任何人都帮帮我!! 提前谢谢。

=============编辑==========================

我试图在不使用AJAX的情况下测试应用程序,并且它是相同的,服务器处理所有数据但没有回答。我检查服务器端的数据库和文件,一切都很好,但是当它完成上传文件时,浏览器会说:等待localhost ......并且永远不会完成

我的gsp表格:

<g:uploadForm class="upload-form" method="POST"
                          controller="fileManager" action="upload">

                <div class="modal-body">

                    <div class="area-msgs">

                    </div>

                    %{-- Selector de Ficheros/Carpeta oculto --}%
                    <input name="files[]" class="upload" type="file"  id="upload-files" webkitdirectory />

                    <div class="area-seleccion">
                        <div class="boton-select pull-left">
                            <div id="select-files" class="btn btn-large" >
                                <span class="icon-folder"></span>
                            </div>
                        </div>

                        <div class="texto-cant pull-left">0 ficheros seleccionados</div>
                    </div>

                </div>

                <div class="modal-footer">
                    <g:submitButton name="btn-submit-files"
                        class="btn btn-primary"
                        value="Enviar">
                    </g:submitButton>
                </div>

            </g:uploadForm>

我在控制器中的上传操作:

def upload() {

        //Recibo los datos de la vista

        //Si no existe un directorio para el usuario
        //en el servidor lo creo

        def fullPath = 'uploads'            +
                        File.separator      +
                        session.user.userid +
                        File.separator


        def userFolder = new File(fullPath)
        if (!userFolder.exists()){

            userFolder.mkdirs()

        }

        //Si vienen el (los) fichero (os) hago el envío
        //al servidor

        def resp = [status: 'OK']

        request.getFiles("files[]").each { file ->

            def documentItem = new Document()
            documentItem.docName = file.originalFilename

            // Genero un numero aleatorio para evitar
            // nombres duplicados
            def num = (new Random()).nextInt(99999)
            def fileName = num + '_' + file.originalFilename

            //Si existe un fichero con ese nombre
            //vuelvo a intentarlo

            while (new File(fullPath + fileName).exists()){

                num = (new Random()).nextInt(99999)
                fileName = num + '_' + file.originalFilename

            }

            documentItem.fullPath = fullPath + fileName
            documentItem.size = FileUtilService.humanSize(file.getSize())

            //Una vez creado el nombre unico guardo
            //el fichero en el servidor
            file.transferTo( new File(documentItem.fullPath) )

            if (!documentItem.save()){

                resp = [status: 'Error']

            }

        } // --> Fin de recorrer cada fichero subido

        render resp as JSON

    }

任何帮助或建议?

0 个答案:

没有答案