Загрузка cffile для coldfusion заменить не выбранный файл

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

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

Код:

<form 
 enctype="multipart/form-data" 
 method ="post" 
 name   ="attupload"  
 action ="">

<cfoutput>   
   <table style = "margin-left: 40%">
  <tr><td>
   <input name="theupload" 
          type="file" 
          style = "font-family: comic sans ms; 
                   color: ##679C9C">        
  </td></tr>
  </table>
   <div style = "width:20%; margin:5% auto 5% 45%">  
     <input name  = "submit" 
            type  = "submit"
            class = "submitbut" 
            style = "font-size: 16px"
            value = "Upload File"> 
   </div> 

</cfoutput>   
</form>

Слова «файл не выбран» кажутся частью поля ввода имя = «загрузить», но, очевидно, ColdFusion берет его под свой контроль, и я не могу вставить что-либо еще.

введите здесь описание изображения

Кто-нибудь знает, как я могу управлять примечанием «файл не выбран», чтобы я мог вернуть имя выбранного файла в это место? Я пробовал с javascript, но он просто игнорируется.


person Betty Mock    schedule 04.02.2021    source источник


Ответы (1)


После выбора файла вы можете получить доступ к его свойствам через JavaScript с помощью Файловый API. Вы не можете изменить значение, отображаемое рядом с полем <input type="file"> по умолчанию, с помощью JavaScript.

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file

Вам также следует избегать отправки форм на одну и ту же страницу. Вы должны следить за процессом:

  • Страница формы
  • HTTP POST для формирования страницы обработки.
  • после обработки формы <cflocation> (перенаправление 301) обратно на страницу списка или страницу формы.

Когда вы отправляете сообщение на ту же страницу, пользователь может нажать «Обновить», и ему будет предложено повторно отправить данные формы. Это может быть проблематично во многих ситуациях. В качестве альтернативы вы можете опубликовать данные формы, используя Ajax или лучше, через Fetch. Это позволяет избежать повторной публикации при перезагрузке страницы и перенаправлении с текущего экрана.

Кроме того, вам следует избегать называть <input type="submit"> отправку. Он может конфликтовать с функцией JavaScript submit(), если вам понадобится его использовать.

<input name  = "submit" 
        type  = "submit"
        class = "submitbut" 
        style = "font-size: 16px"
        value = "Upload File"> 
person Adrian J. Moreno    schedule 04.02.2021
comment
Вы совершенно правы, что я должен отправить его на другую страницу. Вы говорите, что я не могу повлиять на значение, отображаемое рядом с полем ‹input type=file› по умолчанию, с помощью JavaScript. Мне интересно, знаете ли вы другой способ повлиять на это? Вы знаете, как это работает? Похоже, это свойство HTML, а не coldfusion. - person Betty Mock; 06.02.2021
comment
Кнопка отправки ввода, имя = отправить, является ошибкой, и я удалил ее. Что касается type = submit, во всем моем коде либо есть кнопка отправки с type = submit, либо я отправляю форму с помощью javascript, используя submit(). Однако никогда не бывает и того, и другого. - person Betty Mock; 06.02.2021
comment
Традиционно входные значения файла читались только из соображений безопасности. Не уверен, изменилось ли это с помощью html5 stackoverflow.com/questions/1696877/ - person SOS; 08.02.2021