javascript - 通过节点 js 和 Angular 将文件上传到 multer
问题描述
我想将文件上传到我的 SQLite3 db 当我尝试以下代码时,我一直收到 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)
);
数据路由器.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);
})
解决方案
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);
})
multer 存储配置错误
推荐阅读
- java - 如何在不将图像保存在本地的情况下将捕获的图像(Surface View)传递给另一个片段?
- oracle - 在预期的地方找不到关键字 - Oracle CRXI 命令
- vb.net - 如何在数组VB.Net中指示数字出现的位置
- caching - 如何使 apollo 中的缓存失效?
- android - 具有自定义 GeoJSON 数据的导航应用程序
- javascript - 从命令行打开 Chrome/Chromium 并将 javascript 操作发送到 chrome/chromium 控制台
- python - 如何从月度数据中找出月差数?
- hyperledger-composer - 尝试启动另一个作曲家业务网络时出错
- perl - 在perl中将文件的位置更改为另一个
- android - 如何按 ID 过滤 recyclerView?