Ваш код выглядит хорошо, за исключением этой строки:
form.append("uploadFile", "C:\\temp\\test.txt");
Передача имени файла в качестве второго параметра не будет работать, согласно документации FormData.append
здесь , вам нужно передать некоторый объект blob / file, указывающий на сам документ (не на строку)
Теперь есть 2 возможных сценария:
Сценарий 1
Пользователь выбирает файл вручную, используя кнопку обзора
Здесь вам нужно добавить вход на страницу и триггер для загрузки файла, когда он выбран, что-то вроде ниже может быть:
uploadDataFile();
function uploadDataFile(fileInput) {
// creates the FormData object
var form = new FormData();
// get the first file in the file list of the input
// (you will need a loop instead if the user will select many files)
form.append("uploadFile", fileInput.files[0]);
// ... the rest of your AJAX code here ...
}
<input type="file" onchange="uploadDataFile(this)" />
Сценарий 2
Загрузка файла напрямую без вмешательства пользователя
Здесь необходимо построитьфайловый объект вручную такой же, как в этом ответе , и затем вы добавите его как обычно в ваш объект данных
function uploadDataFile() {
// creates the file object
var fileObject = new File (...);
// creates a data object and appends the file object to it
var form = new FormData();
form.append("uploadFile", fileObject);
// ... the rest of your AJAX code here ...
}
Последнее замечание
Обратите внимание на совместимость браузера для FormData
& File
объектов