这里什么原因
来源:9-12 实现上传文件业务
qq_蓝骏毅_04076633
2021-04-14
events.js:288
throw er; // Unhandled 'error' event
^
Error: ENOENT: no such file or directory, open 'C:\Users\pc\Desktop\projects\book-mgr\book-mgr-be\upload\test.xlsx'
Emitted 'error' event on WriteStream instance at:
at errorOrDestroy (internal/streams/destroy.js:108:12)
at WriteStream.onerror (_stream_readable.js:746:7)
at WriteStream.emit (events.js:311:20)
at internal/fs/streams.js:320:12
at FSReqCallback.oncomplete (fs.js:154:23) {
errno: -4058,
code: 'ENOENT',
syscall: 'open',
path: 'C:\\Users\\pc\\Desktop\\projects\\book-mgr\\book-mgr-be\\upload\\test.xlsx'
}const fs = require('fs');
const saveFileToDisk = (ctx, filename) => {
return new Promise((resolve, reject) => {
// 获取上传文件
const file = ctx.request.files.file;
//创建可读流
const reader = fs.createReadStream(file.path);
//创建可写流
const writeStream = fs.createWriteStream(filename);
//读流通过管道写入可写流
reader.pipe(writeStream);
reader.on('end', () => {
resolve(filename);
});
reader.on('error', (err) => {
reject(err);
});
});
};
const getUploadFileExt = (ctx) => {
const { name = '' } = ctx.request.files.file;
return name.split('.').pop();
};
module.exports = {
saveFileToDisk,
getUploadFileExt,
};const Router = require('@koa/router');
const mongoose = require('mongoose');
const { v4: uuidv4 } = require('uuid');
const config = require('../../project.config');
const { verify , getToken } = require('../../helpers/token');
const {saveFileToDisk} = require('../../helpers/upload');
const path = require('path')
//const { getBody } = require('../../helpers/utils');
const User = mongoose.model('User');
const Character = mongoose.model('Character');
const router = new Router({
prefix: '/upload',
});
router.post('/file', async (ctx) => {
const dir = await saveFileToDisk(ctx , path.resolve(config.UPLOAD_DIR,'test.xlsx'));
ctx.body = {
data: dir,
msg: '',
code: 1,
};
});
module.exports = router;写回答
1回答
-
然冬
2021-04-15
看异常是没找到文件。
具体的逻辑我先不过了,告诉你调试方法。
把上传目录的文件都删掉
跑上传接口
跑完看下文件有没有
如果有 则说明文件是存在的,这时候就要比对文件名
如果没有 说明上传就失败了 检测相关逻辑
012021-04-15
相似问题