我正在尝试上传图像,然后nodeJS服务器将该图像文件夹的路径发送回作为响应。
但是当我在执行某些任务后发送响应时,在角度侧什么也没发生。
这是我的component.ts
文件。
uploadImage() {
const formData = new FormData();
formData.append('photo', this.image);
const obj$ = this.userService.uploadData(formData);
obj$.subscribe(data => {
console.log(data); //// nothing happening.
if (data.success) {
this.uploadForm.patchValue({
document: data.url
});
}
});
}
和我的service.ts
uploadData (uploadImage) {
return this.http.post<UploadPhoto>('/user/upload', uploadImage);
}
和我的app.js
router.post('/upload' ,upload.single('photo'), (req,res) => {
console.log(req.file);
const body = req.file;
cloudinary.uploader.upload(body.path, (err, result) => {
if (err) {
console.log(err);
return;
}
console.log(result);
res.status(200).json({
url: result.url,
success: true
});
});
});
但是当我不执行任何任务而发送响应时,它的工作原理就像
router.post('/upload' ,upload.single('photo'), (req,res) => {
console.log(req.file);
const body = req.file;
res.status(200).json({
url: 'hello',
success: true
})
});
我不知道为什么会这样。
请有人帮助我。
答案 0 :(得分:1)
当您的上传器中发生错误时,您会将错误返回到控制台,然后结束执行。如果异步方法中有错误,则必须将其传递给next()
函数,以便express可以处理它。
router.post('/upload' ,upload.single('photo'), (req,res, next) => {
console.log(req.file);
const body = req.file;
cloudinary.uploader.upload(body.path, (err, result) => {
if (err) {
console.log(err);
next(err);
}
else {
console.log(result);
res.status(200).json({ url: result.url, success: true });
}
});
});