问题描述
我在Feathersjs上发送上传文件的请求时,在Postman上收到此错误:
{
"name": "GeneralError","message": "ENOENT: no such file or directory,open 'public/uploads/pic'","code": 500,"className": "general-error","data": {},"errors": {}
}
我的uploads.service.js:
const {Uploads} = require('./uploads.class');
const createModel = require('../../models/uploads.model');
const hooks = require('./uploads.hooks');
const multer = require('multer');
const storage = multer.diskStorage({
destination: (_req,_file,cb) => cb(null,'public/uploads'),// where the files are being stored
filename: (_req,file,cb) => {
console.log(_req.body);
//cb(null,${_req.body.name});
cb(null,`${_req.body.name}`); //
},// getting the file name
});
const uploads = multer({
storage,limits: {
fieldSize: 1e8,fileSize: 1e7,},});
module.exports = function(app) {
const options = {
Model: createModel(app),paginate: app.get('paginate'),multi: true,};
// Initialize our service with any options it requires
app.use(
'/uploads',uploads.array('files'),(req,_res,next) => {
const {method} = req;
if (method === 'POST' || method === 'PATCH') {
console.log(req.files);
console.log(req.body);
req.feathers.files = req.body.files;
const body = [];
for (const file of req.files)
body.push({
name: req.body.name,newNameWithPath: file.path,});
req.body = method === 'POST' ? body : body[0];
}
next();
},new Uploads(options,app),);
// Get our initialized service so that we can register hooks
const service = app.service('uploads');
service.hooks(hooks);
};
这是我的uploads.model.js:
module.exports = function(app) {
const modelName = 'uploads';
const mongooseClient = app.get('mongooseClient');
const {Schema} = mongooseClient;
const schema = new Schema(
{
name: {type: String,required: true},{
timestamps: true,);
// This is necessary to avoid model compilation errors in watch mode
// see https://mongoosejs.com/docs/api/connection.html#connection_Connection-deleteModel
if (mongooseClient.modelNames().includes(modelName)) {
mongooseClient.deleteModel(modelName);
}
return mongooseClient.model(modelName,schema);
};
我真的不知道问题出在哪里。据我介绍,应该在我上传文件时自动创建该文件夹。
我非常感谢您的帮助。预先谢谢你。
解决方法
这是我自己的错误。我自己在uploads
文件夹中创建了public
文件夹,现在可以使用了。