ColdFusion: получите название файла перед загрузкой

Вы можете сделать это, используя функцию async await

var getDataById = function (id) {
    return new Promise(function (resolve, reject) {
        con.query('SELECT * FROM station WHERE id=' + id, function (err, result, field) {
            if (err) {
                console.log("ERROR 3");
                reject(err);
            } else {
                resolve(result);
            }
        });
    });
};

(async function () {
    for (var i = 0; i < map.length; ++i) {
        var data = await getDataById(map[i]);
        data.forEach(function (r) {
            stationName.push(r.name);
        });
        if (stationName.length == map.length) {
            console.log(stationName);
        }
    }
})();
12
задан Shawn Holmes 14 January 2012 в 18:08
поделиться

6 ответов

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

Ответ Бена Дума обычно такой, как я бы подошел это, однако.

0
ответ дан 2 December 2019 в 04:43
поделиться

Я не знаю, как это выяснить перед вызовом cffile, но может быть обходной путь.

Когда вы вызываете , вы можете указать результат, используя result = "variable" . Итак, вызовите загрузку с местом назначения как временный файл. Ваша результирующая переменная - это структура, которая содержит член clientFile, который является именем файла на клиентском компьютере.

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

7
ответ дан 2 December 2019 в 04:43
поделиться

Если у вас есть атрибут имени, определенный в элементе управления вводом, имя файла будет в Область применения ФОРМЫ. Например:

<cfif not structIsEmpty(form)>
    <cfdump var="#form#">
<cfelse>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
        <form method="POST" action="#cgi.SCRIPT_NAME#">
            <input type="file" name="fileIn" />
            <input type="Submit" name="formSubmit">
        </form>
    </body>
    </html>
</cfif>
0
ответ дан 2 December 2019 в 04:43
поделиться

Вот как мы это делаем. В основном это файловое поле, и строковое поле. JavaScript получает имя файла из браузера перед отправкой формы. Очевидно, вам нужно убедиться, что имя файла на другом конце действительно присутствует (например, оно будет пустым, если у пользователя отключен JavaScript), и вам нужно будет проанализировать строку для обработки различий между платформами ( / users / bob / file.jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

JavaScript получает имя файла из браузера перед отправкой формы. Очевидно, вам нужно убедиться, что имя файла на другом конце действительно присутствует (например, оно будет пустым, если у пользователя отключен JavaScript), и вам нужно будет проанализировать строку для обработки различий между платформами ( / users / bob / file.jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

JavaScript получает имя файла из браузера перед отправкой формы. Очевидно, вам нужно убедиться, что имя файла на другом конце действительно присутствует (например, оно будет пустым, если у пользователя отключен JavaScript), и вам нужно будет проанализировать строку для обработки различий между платформами ( / users / bob / file.jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

вам нужно убедиться, что имя файла на другом конце действительно присутствует (например, оно будет пустым, если у пользователя отключен JavaScript), и вам нужно будет проанализировать строку для обработки различий в платформах ( / users / bob / file.jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

вам нужно убедиться, что имя файла на другом конце действительно присутствует (например, оно будет пустым, если у пользователя отключен JavaScript), и вам нужно будет проанализировать строку для обработки различий в платформах ( / users / bob / file.jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

jpg по сравнению с C: \ Documents and Settings \ bob \ file.jpg )

<script>
    function WriteClientFileName(){
        $('ClientFileName').value = $('ClientFile').value;
    }
</script>

<form enctype="multipart/form-data" onsubmit="WriteClientFileName();">

    <input type="File" name="ClientFile" id="ClientFile">
    <input type="hidden" name="ClientFileName" id="ClientFileName" value="">

    <input type="submit">
</form>

Между прочим, этот метод является кросс-языковым. Он будет одинаково хорошо работать в RoR, PHP, JSP и т. Д.

Изменить: Если пользователь «использует яростный FireBug», в чем проблема? Даже если у них нет Firebug, они все равно могут переименовать файл на своей стороне и изменить ввод. Кроме того, вы подтверждаете свои данные, верно?

право?

право?

0
ответ дан 2 December 2019 в 04:43
поделиться

Невозможно узнать имя загруженного файла перед сохранением на сервер в ColdFuson, Railo или OpenBD. Я обычно создаю «свое» новое имя файла с помощью функции createUUID () перед сохранением файла.

-1
ответ дан 2 December 2019 в 04:43
поделиться

WOW, я нашел отличное и простое решение! с небольшим javascript

Таким образом вы получаете временное имя файла для загрузки cffile и фактическое имя file.jpg для базы данных

<html>
<head>
<script type="text/javascript">
function PassFileName()
{
document.getElementById("fileName").value=document.getElementById("fileUp").value;
}
</script>
</head>
<body>
<form name="form1" method="post" enctype="multipart/form-data" >
File: <input type="file" name="fileUp" id="fileUp" size="20" onchange="PassFileName()" /> <br />
Title: <input type="text" name="Title" id="Title"><br />
<input type="hidden" id="fileName" size="20" name="fileName" />
<input type="submit" name="submit">
</form>
</body>
</html>
2
ответ дан 2 December 2019 в 04:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: