Javascript 在执行ajax post时在服务器上上载了多个文件,但没有使用XMLHttpRequest()post上载?
正在使用ajax()和XMLHttpRequest()执行POST操作。Ajax来自HTML表单本身,其中as XMLHttpRequest()使用javascript。下面是两个请求的代码 XMLHttpRequest()客户端代码:Javascript 在执行ajax post时在服务器上上载了多个文件,但没有使用XMLHttpRequest()post上载?,javascript,jquery,ajax,xmlhttprequest,Javascript,Jquery,Ajax,Xmlhttprequest,正在使用ajax()和XMLHttpRequest()执行POST操作。Ajax来自HTML表单本身,其中as XMLHttpRequest()使用javascript。下面是两个请求的代码 XMLHttpRequest()客户端代码: multiUpload(uploadFiles){ return new Promise((resolve, reject)=> { var uploadFormData = n
multiUpload(uploadFiles){
return new Promise((resolve, reject)=> {
var uploadFormData = new FormData();
var i=0;
for(i=0; i < uploadFiles.length ; i++){
uploadFormData.append('uploadFiles', uploadFiles[i]);
}
var xhr = new XMLHttpRequest();
xhr.open('post', MULTI_FILE_UPLOAD_URL , true);
xhr.onload = function () {
if (this.status == 200) {
console.log("Resolve done !!!");
resolve(this.response);
} else {
console.log("Reject done !!!");
reject(this.statusText);
}
};
console.log(uploadFormData);
xhr.send(uploadFormData);
});
}
XMLHttpRequest()和ajax调用的服务器端代码:
<form id="uploadForm" enctype="multipart/form-data" action="/api/photo" method="post">
<input type="file" name="userPhoto" multiple />
<!-- Input form goes here -->
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.form/3.51/jquery.form.min.js"></script>
<script>
$(document).ready(function(){
$('#uploadForm').submit(function() {
$("#status").empty().text("File is uploading...");
$(this).ajaxSubmit({
error: function(xhr) {
status('Error: ' + xhr.status);
},
success: function(response) {
console.log(response)
$("#status").empty().text(response);
}
});
return false;
});
});
</script>
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, newPath);
},
filename: function (req, file, callback) {
callback(null, file.originalname );
}});
var upload = multer({ storage : storage }).array('userPhoto');
app.post('/multiFileUpload', function(req, res) {
upload(req,res,function(err){
console.log(req);
if(err){
console.log("Error in upoading file "+err);
return res.send("Server Error in uploading file.");
}
res.send("File is uploaded successfully.");
});
现在,当我从服务器代码在控制台中显示req
对象时,我得到以下结果(左边是ajax调用,右边是XMLHttpRequest()调用)。实际上,我在服务器上一次上载多个文件。使用ajax调用文件正在上载,但使用XMLHttpRequest(),这不会发生,并且会出现错误。如何使用XMLHttpRequest()实现相同的结果?还有一件事,两种方式创建应用程序对象的方式是:
用于XMLHttpRequest()-
var express = require('express');
var app = module.exports = express.Router();
var express = require("express");
var app = express();
Ajax调用的是:-
var express = require('express');
var app = module.exports = express.Router();
var express = require("express");
var app = express();
那么,这是否造成了问题