这里什么原因
来源: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
相似问题