Fine Uploader с Coldfusion

Я получаю внутреннюю ошибку сервера 500 при попытке использовать http://fineuploader.com/ на стороне сервера Coldfusion https://github.com/Widen/fine-uploader-server/tree/master/coldfusion

Консоль сообщает:
[FineUploader] Ошибка при попытке проанализировать текст ответа xhr (SyntaxError: Unexpected token ‹) в этой строке в window.console.log('‹' + level + '> ' + message);

Кажется, это исходит из ответного сообщения в CFC сервера.

<!--- Code provided by Pegasus Web Productions LLC - www.pegweb.com --->
<!--- get stuck use the forums http://github.com/Widen/fine-uploader --->
<!--- Tested with Adobe CF Enterprise 9.x and Fine Uploader --->
<CFCOMPONENT HINT="I do your uploads from Fine Uploader" >
<!--- function for single file submission uploads where XHR is not supported ex:->
<CFFUNCTION NAME="Upload" ACCESS="remote" OUTPUT="false" RETURNTYPE="any"     RETURNFORMAT="JSON" >
    <CFARGUMENT NAME="qqfile" TYPE="string" REQUIRED="true" />

    <CFSET var local = structNew() >
    <CFSET local.response = structNew() >
    <CFSET local.requestData = GetHttpRequestData() ><!--- get the request headers   and body --->
    <CFSET UploadDir = "/Test/file2" ><!--- set your upload directory here ex: c:\website\www\images\ --->
    <!--- check if XHR data exists --->
    <CFIF len(local.requestData.content) GT 0 >

        <CFSET local.response = UploadFileXhr(arguments.qqfile, local.requestData.content) >

        <CFELSE><!--- no XHR data so process this as standard form submission --->
            <!--- upload the file --->
            <CFFILE ACTION="upload" FILEFIELD="form.qqfile" DESTINATION="#UploadDir#" NAMECONFLICT="makeunique" >

            <!--- populate our structure with information about the image we just uploaded in case we want to use this later for CFIMAGE tags or any other processing --->
            <CFSET local.metaData = { clientFile=FILE.clientFile, clientFileExt=FILE.clientFileExt, clientFileName=FILE.clientFileName, contentSubType=FILE.contentSubType, contentType=FILE.contentType, fileSize=FILE.fileSize } />
            <!--- return the response --->
            <CFSET local.response['success'] = true >
            <CFSET local.response['type'] = 'form' >
    </CFIF>
    <CFRETURN local.response >
</CFFUNCTION>

<!--- function for browsers that support XHR ex: Almost anything but IE --->

<CFFUNCTION NAME="UploadFileXhr" ACCESS="private" OUTPUT="false" RETURNTYPE="struct" >
    <CFARGUMENT NAME="qqfile" TYPE="string" REQUIRED="true" />
    <CFARGUMENT NAME="content" TYPE="any" REQUIRED="true" />

    <CFSET var local = structNew() >
    <CFSET local.response = structNew() >
    <CFSET UploadDir = "" ><!--- set your upload directory here ex: c:\website\www\images\ --->
    <!--- write the contents of the http request to a file. The filename is passed with the qqfile variable --->
    <CFFILE ACTION="write" FILE="#UploadDir#\#arguments.qqfile#" OUTPUT="#arguments.content#" NAMECONFLICT="makeunique" >

    <!--- populate our structure with information about the image we just uploaded in case we want to use this later for CFIMAGE tags or any other processing --->
    <CFSET local.metaData = { clientFile=FILE.clientFile, clientFileExt=FILE.clientFileExt, clientFileName=FILE.clientFileName, contentSubType=FILE.contentSubType, contentType=FILE.contentType, fileSize=FILE.fileSize } />

    <!--- return custom JSON if desired--->
    <CFSET local.response['success'] = true >
    <CFSET local.response['type'] = 'xhr' >
    <CFRETURN local.response >
</CFFUNCTION>

Calling page

    <div id="thumbnail-fine-uploader">
    </div>
    <script src="/js/jQueryv1.9.1.js">
    </script>
    <script src="/Test/file2/jquery.fineuploader-3.4.1.js">
    </script>
    <script>
        $(document).ready(function(){
            var thumbnailuploader = new qq.FineUploader({
                element: $('#thumbnail-fine-uploader')[0],
                request: {
                    endpoint: 'image-uploader.cfc?method=Upload'
                },
                multiple: false,
                validation: {
                    allowedExtensions: ['jpeg', 'jpg', 'gif', 'png'],
                    sizeLimit: 51200 // 50 kB = 50 * 1024 bytes
                },
                callbacks: {
                    onComplete: function(id, fileName, responseJSON){
                        if (responseJSON.success) {
                            $('#thumbnail-fine-uploader').append('<img src="img/success.jpg" alt="' + fileName + '">');
                        }
                    }
                }
            });
        });
    </script>

person user2116604    schedule 15.04.2013    source источник
comment
Пример CF был предоставлен пользователями. Я не особо разбираюсь в CF. Ошибка предполагает, что ваш код на стороне сервера не возвращает правильный ответ JSON. Скорее всего, вместо этого возвращается HTML. Можете ли вы вставить содержимое ответа в соответствии с инструментами разработчика firebug или Chrome?   -  person Ray Nicholus    schedule 15.04.2013
comment
... также это говорит о том, что ваш сервер просто неправильно анализирует запрос и дает сбой в процессе. Знаете ли вы, где именно ваш код на стороне сервера дает сбой?   -  person Ray Nicholus    schedule 15.04.2013
comment
POST 127.0.0.1:8500/Test/file2/image-uploader .cfc?method=Upload 500 (внутренняя ошибка сервера) jquery.fineuploader-3.4.1.js:3903 [FineUploader] Ошибка при попытке проанализировать текст ответа xhr (SyntaxError: Неожиданный токен ‹) jquery.fineuploader-3.4 .1.js:155, и я считаю, что cfc здесь не работает ‹!--- при желании вернуть пользовательский JSON---› ‹CFSET local.response['success'] = true › ‹CFSET local.response['type' ] = 'xhr' ›   -  person user2116604    schedule 15.04.2013
comment
Это происходит во всех браузерах? Какую версию Fine Uploader вы используете? Как выглядит ваш клиентский код?   -  person Ray Nicholus    schedule 15.04.2013
comment
Похоже, я получаю этот ответ qqfilechunk|IMG_2083.JPG|2679388|2000000 value b43b6ff5-394a-4d43-a571-40b461c5a493|0|0|1041|2681470 Я также добавил клиентский код выше   -  person user2116604    schedule 15.04.2013
comment
Да 3 браузера на Mac. Фаерфокс, Хром, Сафари   -  person user2116604    schedule 15.04.2013
comment
Это просто содержимое файла cookie, созданного Fine Uploader. Вам нужно будет внимательно изучить код на стороне сервера, чтобы выяснить, где он не может вернуть правильный ответ JSON. Код, который возвращает успешный JSON, выглядит нормально, поэтому, возможно, ваш сервер выходит из строя до того, как он достигает этой строки.   -  person Ray Nicholus    schedule 15.04.2013
comment
Получил работу, во втором методе мне не хватало пути к каталогу загрузки. ‹CFSET UploadDir = #expandpath('/test/file2')# › Спасибо за помощь   -  person user2116604    schedule 15.04.2013
comment
НП. Пожалуйста, введите свой результат в качестве ответа, чтобы другие люди с такой же проблемой могли легко его увидеть.   -  person Ray Nicholus    schedule 15.04.2013


Ответы (1)


Все заработало, во втором методе мне не хватало пути к каталогу загрузки.

<CFSET UploadDir = "#expandpath('/test/file2')#" > 

Спасибо за помощь

person user2116604    schedule 16.04.2013