Проблема передачи файлов из файла ввода в данные формы JavaScript

#javascript #file-io #fetch

Вопрос:

У меня возникает проблема, когда я пытаюсь передать свой файл из ввода html в сценарий js.

Вот мой html-ввод:

 echo "<td scope="col"><input type="file" id="newImage" name="imageCategory" onchange="changeImageCategory('" . $category["product_category_id"]."', '".$category["image_path"] ."')">";
 

и это моя функция js:

 async function changeImageCategory(categoryId, oldPath){
    let formData = new FormData();
    //let newImage = document.getElementById('newImage');
     formData.append("imageCategory", newImage.files[0]);

    console.log(formData);
    await fetch('../PHP/requestUploadImageCategory.php?id=' encodeURI(categoryId) 'amp;oldPath=' encodeURI(oldPath),{
        method: "POST",
        data: formData,
        headers: {
            'content-type': 'multipart/form-data'
        }

    });
    await displayCategory();
} 
 

Я попытался утешить.войдите в «Новое изображение.файлы[0]»

И у меня в коде есть почти та же функция, которая работает и правильно возвращает имя моего файла в console.log.

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

Я также скопировал свою вторую функцию (эта работает!):

 async function createCategory(){
    let newCategoryName = document.getElementById('newCategoryName').value;
    let formData = new FormData();

    formData.append("NewImageCategory", NewImageCategory.files[0]);
    await fetch('../PHP/requestAddCategory.php?name=' encodeURI(newCategoryName),{
        method: "POST",
        body: formData,
    });
    document.getElementById("NewImageCategory").value = "";
    await displayCategory();
}
 

Комментарии:

1. Ключевое различие между этими двумя функциями, по-видимому, заключается в том, что вы делаете это в ту секунду, когда вы это делаете document.getElementById('newCategoryName').value . Вы пробовали добавить способ доступа .value в первую функцию? document.getElementById('newImage').value

2. спасибо за ваше сообщение во втором документе.getElementById(‘Имя новой категории’).значение предназначено для ввода текста. и да, я попробовал let newImage = document.getElementById(‘Новое изображение’); а также попробовал let newImage = document.getElementById(‘Новое изображение’).значение; ничего не работает