Отправка файла из Angular в NodeJS с использованием multer - PullRequest
0 голосов
/ 23 октября 2018

У меня есть такой простой .html фрагмент:

  <input id="cin" name="cin" type="file" placeholder="Upload a file..." />

При нажатии кнопки рядом с входом вызывается эта функция:

  upload() {
    let inputEl: HTMLInputElement = <HTMLInputElement>(
      document.getElementById("cin")
    );
    let formData = new FormData();
    formData.append("file", inputEl.files.item(0));
    console.log(inputEl.files.item(0));
    console.log(formData);
    this.uploadService
      .uploadFile(formData)
      .subscribe(files => console.log("files", files));
  }

Это код, относящийся кМетод uploadFile в сервисе:

export class UploadService {
  constructor(private http: HttpClient, private loginService: LoginService) {}
  httpOptions = {
    headers: new HttpHeaders({
      "Content-Type": "application/x-www-form-urlencoded",
      "x-access-token": this.loginService.userInfo
    })
  };
  uploadFile(file): Observable<any> {
    console.log(file);
    return this.http.post<any>(
      "http://localhost:8080/nodec3/api/v1/uploadFile",
      {
        image: file
      },
      this.httpOptions
    );
  }
}

Ниже приведен мой код NodeJS:

var storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, "./files/");
  },
  filename: function(req, file, cb) {
    cb(
      null,
      file.originalname.split(".")[0] +
        Date.now() +
        "." +
        mime.getExtension(file.mimetype)
    );
  }
});
var upload = multer({ storage: storage });
module.exports.upload = upload;

и маршрут:

router.post(
  "/uploadFile",
  verifyToken,
  fileController.upload.single("image"),
  (req, res, next) => {
    console.log(req);
    res.status(201).send("File uploaded");
  }
);

При использовании Postman для добавленияfile, используя свои данные формы, nodejs правильно сохраняет файл на жестком диске.Однако, используя приведенный выше код Angular, он не печатает никаких ошибок, но файл не сохраняется.Кто-нибудь знает, почему это происходит?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...