загрузить файл в Multer через node js и Angular - PullRequest
0 голосов
/ 08 мая 2020

Я хочу загрузить файл в свою базу данных SQLite3. Я продолжаю получать ошибку 500, когда пытаюсь выполнить следующий код, в моем запросе нет даже ошибки 500. Я также пробовал использовать formData, но получаю ту же ошибку, что и похоже файл даже не делает запрос

profile.component. html

<div *ngIf="!close" class="Modal-Background toggle-Modal">
                    <div class="Center-Block Absolute-Center is-Fixed is-Variable Modal" id="Fixed-Modal">
                      <div class="Center-Content">
                            <div class="title" > 
                                    <h3>Edit Profile</h3> <p class="x" (click)="closeWindow()">X</p></div> 

                            <form [formGroup]="edit"enctype="multipart/form-data">
                                    <input type="file" name="file" (change)="selectImage($event)" />
                                    <button (click)="submit()">Submit</button>
                                    </form>
                      </div>
                    </div>
                  </div>

      <div >

profile.component.ts


import { Component, OnInit } from '@angular/core';
import { NavbarComponent } from '../navbar/navbar.component';
import { ActivatedRoute, Router } from '@angular/router';
import { HttpClient } from '@angular/common/http';
import {FormControl, FormGroup,Validators} from '@angular/forms';

export class ProfileComponent implements OnInit {

  images;




  constructor(private http:HttpClient,private router:ActivatedRoute,private _router:Router) { }

  ngOnInit(){
...
}
 selectImage(event) {
    if (event.target.files.length > 0) {
      const file = event.target.files[0];
      this.images = file;
    }
  }
  submit(){
    const formData = new FormData();
    formData.append('file', this.images);
    console.log(formData)
    this.http.post<any>('http://localhost:5000/file', {images:this.images}).subscribe(
      (res) => console.log(res),
      (err) => console.log(err)
    );

data-router. js


const express = require('express');

const data = require('./data-model')

const router = express.Router();
const bcrypt = require("bcryptjs")
const jwt = require("jsonwebtoken")
const multer = require("multer")

// router.use(cors({ origin: "*" }));
// router.use(bodyParser.json());

var store = multer.diskStorage({
  destination:function(req,file,cb){
      cb(null, './uploads');
  },
  filename:function(req,file,cb){
      cb(null, Date.now()+'.'+file.originalname);
  }
});


var upload = multer({storage:store})

router.post('/file', upload.single('file'), (req, res, next) => {
  // console.log(req.body);
  const file = req.file;
  console.log(file.filename);
  if (!file) {
    const error = new Error('No File')
    error.httpStatusCode = 400
    return next(error)
  }
    res.send(file);
})

1 Ответ

0 голосов
/ 14 мая 2020

const express = require('express');
const router = express.Router();
const multer = require("multer")

const upload = multer({
    dest: './uploads',

})

router.post('/file', upload.single('file'), (req, res, next) => {
    // console.log(req.body);
    const file = req.file;
    console.log(file.filename);
    if (!file) {
        const error = new Error('No File')
        error.httpStatusCode = 400
        return next(error)
    }
    res.send(file);
})

Мультер-хранилище было настроено неправильно

...