I use XMLHttpRequest to upload a file. If server responds with error message 500, I try to handle error message before onprogress event.
XMLHttpRequest
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (oEvent) {
if (xhr.readyState === 4) {
if (xhr.status === 500) {
console.log('error2');
}
}
};
xhr.onload = function() {
if (this.status == 200) {
console.log('success');
}
};
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete);
}
};
xhr.open("POST", "http://127.0.0.1:1337/upload-file", true);
var formData = new FormData();
formData.append("file", e.file);
xhr.send(formData);
I throw error message on server on purpose:
const Koa = require('koa');
const Router = require('koa-router');
const cors = require('@koa/cors');
const serve = require('koa-static');
const path = require('path');
const koaBodyMultipart = require('koa-body')({ multipart: true });
const app = new Koa();
app.use(cors());
app.use(serve(path.join(process.env.PWD, '/dist')));
const router = new Router();
router
.post('/upload-file', koaBodyMultipart, (ctx, next) => {
const { file } = ctx.request.files;
// if (file) {
// ctx.response.body = 'ok';
// } else {
// ctx.throw(500,'Error Message');
// }
ctx.throw(500,'Error Message');
});
app.use(router.routes()).use(router.allowedMethods());
// don't listen to this port if the app is required from a test script
if (!module.parent) {
var server = app.listen(process.env.PORT || 1337);
var port = server.address().port;
console.log('running at port:' + port)
}
Why is upload.onprogress triggered before xhr.onreadystatechange and xhr.onload? How can I show error message before showing uploading progress?
from XMLHttpRequest.upload.onprogress is triggered when server respons 500 error
No comments:
Post a Comment