クイルエディタでアップロードイメージを開発している間、私は投稿要求にこだわっています。 私はこの問題を解決するために何をしなければならないのか分かりません。 投稿要求を使用してデータを送信しようとすると、404エラーが発生します。node.jsを使ってPOST 404エラーを修正するには?
ルート/ img.js - UPDATED
var ImageFile = require('../models/imageFiles');
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'img/') // Set directory
},
filename: function (req, file, cb) {
cb(null, file.name) // Set file name
}
});
var img = multer({ storage: storage });
router.post('/upload', img.single('imgfile'), (req, res, next) => {
var imageFile = new ImageFile({
name: req.body.name,
type: req.body.type,
size: req.body.size,
content: req.body.content
});
imageFile.save((err, result) => {
if (err) {
return res.status(500).json({
title: 'An error occured',
error: err
});
}
res.status(201).json({
message: 'User created',
obj: result
});
});
});
module.exports = router;
app.js
const express = require('express');
var bodyParser = require('body-parser');
const port = process.env.PORT || 3000;
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var appRoutes = require('./routes/app');
var userRoutes = require('./routes/user');
var imgRoutes = require('./routes/img');
var app = express();
// Start
app.use(express.static(path.join(__dirname, '../awesome-drill/dist')));
app.use(logger('dev'));
app.use(bodyParser.json({ limit: '10mb' }));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-Width, Content-Type, Accept');
res.setHeader('Access-Control-Allow-Methods', 'POST, GET, PATCH, DELETE, OPTIONS');
next();
});
app.use('/user', userRoutes);
app.use('/img', imgRoutes);
app.use('/', appRoutes);
app.use(express.static('routes'));
// It's for routing SPA
app.get('*', (req, res) => {
res.sendFile(path.join(__dirname, '../awesome-drill/dist/index.html'));
});
app.listen(port,() => {
console.log(`Server is up on port ${port}`);
});
前面サービス(angular4)
import { Injectable } from '@angular/core';
import {Http, Headers, Response} from '@angular/http';
@Injectable()
export class FileService {
public userId = localStorage.getItem('userId');
constructor(private http: Http) { }
imgUpload(obj) {
const body = JSON.stringify(obj);
const headers = new Headers({
'Content-Type': 'application/json'
});
return this.http.post('img/upload', body, {
headers: headers
})
.map((response: Response) => response.json());
}
}
あなたのおかげで、私は私のミスを発見し、私はそれを追加しました。ただし、404エラーが発生します。
ルートに実際に投稿されているフロントエンドコードを含めるには、回答を更新してください。 404は意味がないので、問題とは関係ないので、マングースモデルのコードを削除することもできます。 – Soviut
これは、間違ったURIにデータを送信しているか、バックエンドで定義したと思われるURIが実際に存在しないことを意味します。 404は「見つからない」ことを意味し、あなたのコードが「見つからない結果」に対して明示的にエラーを出力していないので、唯一の別の場所はURLが正しくないためです。 –
あなたのapp.jsには404のミドルウェア私が最初に追加したexpress.jsの設定を覚えています。それは少なくともあなたのコントローラに当たっていますか?またはこれを投げているかもしれない別の 'ミドルウェア'関数を持っていますか? –