Загрузить файл ColdFusion

Я хочу загрузить файл через запрос ajax get, который вызывает функцию coldfusion, но проблема в том, что на вкладке «сеть» в инструментах разработчика я могу «видеть» контент, но не загружаю его.

Вот моя функция coldfusion, которая хранится в cfc:

<cffunction name="download" access="remote" output="true">
    <cfset file_name = "Test.xlsx">
    <cfheader name='Content-Disposition' value='attachment; filename=#file_name#' charset='utf-8'> 
    <cfcontent type="application/msexcel" file="#file_name#" deletefile="false">
</cffunction>

Вот мой вызов ajax:

<script>
        $.ajax({
            method: "GET",
            url: "ses/dev.cfc",
            data: {
                method: 'download'
            },
            cache: false,
            success: function(data) {
                console.log("Downloaded");
            },
            error: 'Not downloaded'
        });
    </script>

И вот мой результат: https://imgur.com/FmPhlKx


person T2Admin    schedule 09.03.2017    source источник
comment
Если вы хотите, чтобы это загрузило файл на ваш компьютер, вам нужно сделать HTTP-запрос GET на сервер, а не XMLHttpRequest (Ajax) GET.   -  person Adrian J. Moreno    schedule 10.03.2017
comment
Я думаю, вам нужно будет сделать это как .cfm, а не как функцию в .cfc.   -  person snackboy    schedule 10.03.2017
comment
Почему вы усложняете простой процесс загрузки файлов, добавляя в уравнение javascript?   -  person Dan Bracuk    schedule 10.03.2017
comment
@DanBracuk Могу я спросить вас, как бы вы это сделали?   -  person T2Admin    schedule 10.03.2017
comment
У меня была бы страница Cold Fusion (.cfm), где последние две строки кода — это теги <cfheader> и <cfcontent>.   -  person Dan Bracuk    schedule 10.03.2017
comment
На самом деле это не относится к ColdFusion. Найдите в архивах загрузку jQuery ajax. Множество потоков, объясняющих причину и возможные альтернативы, такие как stackoverflow.com/questions/4545311/   -  person Leigh    schedule 10.03.2017
comment
@Leigh это относится к ColdFusion, если вы пытаетесь загрузить файл из папки за пределами веб-сайта и если вам нужно проверить, что пользователь вошел в систему и имеет доступ к файлу.   -  person Adrian J. Moreno    schedule 10.03.2017
comment
@ AdrianJ.Moreno - Верно. Я просто имел в виду, что общая проблема не специфична для CF. По крайней мере, не из того, что они опубликовали.   -  person Leigh    schedule 10.03.2017


Ответы (1)


Я думаю, вы должны удалить эту функцию загрузки внутри Ajax и переместить ее в другой процесс... возможно, вызвать ее по другому URL-адресу примерно так:

http://websiteurl.com/download.php?file=xxxxx&sec_string=xxxxxx и т. д.

Надеюсь, это имеет смысл :)

person jovenb    schedule 13.03.2017
comment
Да, это работает, но я до сих пор не понимаю, почему это не сработало. - person T2Admin; 16.03.2017