У меня есть форму, которая может быть отправлена через form.submit()
и ответ будет правильным. Теперь я хочу отправить его с помощью ajax, но у меня возникла проблема при отправке файла.Отправить запрос ajax с загрузкой файла через JavaScript
Форма довольно прост:
<form name="Upload" enctype="multipart/form-data" method="post" action="upload.asp">
<input type="file" name="file" id="fileinput"/>
<input type="button" name="FileUpload" class="button" id="append_new"
onclick="xmlhttpPost('upload.asp', document.getElementById('fileinput').files[0]);" value="submit file"/>
</form>
Я получил AJAX вызова следующим образом:
function xmlhttpPost(strURL, form) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'multipart/form-data');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText);
}
}
self.xmlHttpReq.send('file=' + file);
}
function updatepage(str){
document.getElementById("fileitems").innerHTML = str;
}
Сейчас проблема заключается в следующем: сервер получает строку [object file]
, а не фактическое содержимое файла. Как я могу убедиться, что данные файла отправлены?
нет никакой необходимости, чтобы установить имя файла в заголовке. вы можете заметить, что я изменил тип контента на «multipart/form-data». FYI я обрабатываю это с помощью asp classic (ненавидя его сам) и, следовательно, не нуждаюсь в дополнительных параметрах. – Vogel612