这个事情挺痛苦的,起因,在做博客,想用java做后台,但是java不太熟悉,做图片上传的时候,图片成功保存到本地,但是tomcat报错,c盘xx文件夹/xxx000000.tmp(系统找不到指定文件)
一直打断点,直到return也没报错,图片成功保存但是这个报错蛮神奇的,各种方法都行不通,无奈捡起了nodejs
今天在尝试使用nuxt3的server做api,结果死活拿不到formdata数据,市面上资料也比较少,搞了一下午终于是解决了
npm install formidable
// 这是封装的方法,暂时忽略这个any
const readFiles = (e: H3Event): Promise<any> => {
return new Promise((res, rej) => {
const form = formidable();
form.parse(e.node.req, (err, field, files) => {
if (err) rej(err);
res({
field, // formdata传递的数据
files // formdata传递的文件
})
})
})
}
export default defineEventHandler(async (e) => {
const res = await readFiles(e);
// 返回的数据是,比如field {title:["传递的标题"]}
const { title: [title], essay: [essay], type: [type] } = res.field;
const { imgFile: [imgFile] } = res.files;
// 获取文件后缀名
const fix = imgFile.originalFilename.split(".").at(-1);
fs.readFile(imgFile.filepath,(err,data) => {
if(!fs.existsSync(path.resolve("public/essayBack"))){
fs.mkdirSync(path.resolve("public/essayBack"),{
recursive:true // 创建目录,如果父级目录不存在则创建
})
}
fs.writeFile(path.resolve("public/essayBack")+`/${new Date().getTime()}.${fix}`,new Uint8Array(data),(err) => {
console.log(err);
})
})
})
在nuxt中不可以使用__dirname,不知道为什么,有懂的大佬讲讲吗,还有,一个人学习好无聊,有人要一起组建一个内卷小分队吗,球球热
插一个题外话,大佬们有没有遇到过,api测试工具无法对server api进行调试,报错无法连接
在nuxt.config.ts中,devServer.host = "0.0.0.0"即可