Что происходит между загрузкой файла в форму HTML и его отправкой?

Что происходит с файлом после его загрузки в HTML-форму, но перед отправкой?

Я загрузил свое резюме на этот сайт https://studyhut.com/employment/, а затем щелкнул красным X, чтобы удалить его, но я хочу убедиться, что он был действительно удален.

Проверяя элемент, который является кнопкой "Выбрать файлы", я вижу, что его HTML

input id="gform_browse_button_5_6" value="Select files" class="button gform_button_select_files" aria-describedby="extensions_message" tabindex="9" style="position: relative; z-index: 1;" type="button">

Основываясь на моем знании JavaScript, я должен взглянуть на код, который управляет идентификатором gform_browse_button_5_6 или кнопкой класса gform_button_select_files (какой?), однако в исходном коде есть сценарии gajillion.

  • Как использовать инспектор в Firefox, чтобы определить, где находится идентификатор или класс, или 2. Вообще говоря, мое безопасное резюме между загрузкой и отправкой формы? Я читал ранее, что после отправки файлов хранятся во временной папке на сервере, которая затем может обрабатываться PHP, но что происходит в то время, когда я выбрал файл для загрузки, и он показывает имя файла с возможностью удаления он (возможно, обновил страницу с помощью AJAX)?

UPDATE: Я нашел одно место, где класс gform_button_select_files обрабатывается в https://studyhut.com/wp-content/plugins/gravityforms/js/gravityforms.min.js?ver=2.0.7, а код

b(document).ready(function(){"undefined"!=typeof adminpage&&"toplevel_page_gf_edit_forms"===adminpage||"undefined"==typeof plupload?b(".gform_button_select_files").prop("disabled",!0):"undefined"!=typeof adminpage&&adminpage.indexOf("_page_gf_entries")>-1&&b(".gform_fileupload_multifile").each(function(){c(this)})}),a.setup=function(a){c(a)}}(window.gfMultiFileUploader=window.gfMultiFileUploader||{},jQuery);var __gf_keyup_timeout;jQuery(document).on("change keyup",".gfield_trigger_change input, .gfield_trigger_change select, .gfield_trigger_change textarea",function(a){gf_raw_input_change(a,this)}),!window.rgars,!window.rgar,String.prototype.format=function(){var a=arguments;return this.replace(/{(\d+)}/g,function(b,c){return"undefined"!=typeof a[c]?a[c]:b})};

Означает ли это что-либо для кого-либо или это в значительной степени означает, что человек не читается?

Обновление II Похоже, что c определяется внутри другой функции

)}};!function(a,b){function c(c){function g(a,c){b("#"+a).prepend("<li>"+c+"</li>")}

Гравитационные формы js src

Наконец Это HTML для нажатия кнопки удаления

img class="gform_delete" src="https://studyhut.com/wp-content/plugins/gravityforms/images/delete.png" onclick="gformDeleteUploadedFile(5,6, this);" onkeypress="gformDeleteUploadedFile(5,6, this);" alt="Delete this file" title="Delete this file">

и вот функция gformDeleteUploadedFile

function gformDeleteUploadedFile(a,b,c){var d=jQuery("#field_"+a+"_"+b),e=jQuery(c).parent().index();d.find(".ginput_preview").eq(e).remove(),d.find('input[type="file"]').removeClass("gform_hidden"),d.find(".ginput_post_image_file").show(),d.find('input[type="text"]').val("");var f=jQuery("#gform_uploaded_files_"+a).val();if(f){var g=jQuery.secureEvalJSON(f);if(g){var h="input_"+b,i=d.find("#gform_multifile_upload_"+a+"_"+b);if(i.length>0){g[h].splice(e,1);var j=i.data("settings"),k=j.gf_vars.max_files;jQuery("#"+j.gf_vars.message_id).html(""),g[h].length<k&&gfMultiFileUploader.toggleDisabled(j,!1)}else g[h]=null;jQuery("#gform_uploaded_files_"+a).val(jQuery.toJSON(g))}}}

Ответ 1

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

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

Update:

Поняв еще раз, я думаю, что сервер не удаляет файл, который вы загрузили. Опять же, проверив свою сетевую вкладку при загрузке, вы увидите, что на сервер отправляется запрос ajax через POST, теперь, когда вы нажимаете кнопку "Удалить", на сервер не поступает запрос, и изменение производится только в интерфейсе, который вы ожидаете запрос DELETE, но это не так. Таким образом, сервер сохраняет вашу загрузку, но не знает, что с ним делать. Может быть, они удалят его, если не свяжутся ни с чем через какое-то время или просто сохраняют его навсегда.

Первый запрос ajax выглядит инициированным с помощью https://studyhut.com/wp-includes/js/plupload/plupload.full.min.js?ver=2.1.8 плагин

Ответ 2

Что происходит с файлом после его загрузки в HTML-форму, но до его отправки?

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

Обратите внимание, что теперь возможно установить свойство .files элемента <input type="file"> объекту FileList, имеющему .length 0 и не содержащему объектов File, см. Сделать .files устанавливаемым # 2866.

<input type="file" />
<input type="button" value="Delete Files" />
<script>
  const input = document.querySelector("input[type=file]");
  const button = document.querySelector("input[type=button]");

  let files = input.files; // `FileList` object
  
  console.log(files);
  // set `.files` of `<input type="file">` to `FileList`
  const setFiles = (element, files) => {
    if (element.files.length) {
      element.files = files; // set `.files` of `<input>` element
      console.log(element, element.files);
    }
  };

  input.onchange = () => {
    if (input.files.length > 0) {
      // do stuff
      console.log(input.files);
    }
  }

  button.onclick = () => {
    setFiles(input, files);
  }
</script>