之前在写网站的时候,同学先容说node文件上传功能要比java快,于是我就实验用node内里的formidable模块写上传功能模块。
哎效果真的是坑死我了,由于用的是vue-cli脚手架在我把项目打包完成发现文件上传功能用不了,厥后突然明确文件上传是后端干的事,而vue-cli打包完后就成了静态资源,没有node运行的情况。
管理办法是在服务器上安装node情况,然后单独运行文件上传这个模块。
由于我的后端用java写的没办法只能用java再写一个文件上传功能,不外最后发现java文件上传要比node快性能更好。
单从java强范例语言就比node弱范例语言快许多多少,
java一次能上传150MB巨细的文件 ,node似乎是100MB左右
以下是我封装好的node文件上传代码
注意要先安装 formidable模块
vue中运行的话需要安装 concurrently 模块,然后修改package.json文件在script中添加
"start": "concurrently \"vue-cli-service serve\" \" node server.js\"", node反面是文件相对路径

- //创建网站服务器const http = require("http");//创建服务器对象const path = require('path');const formidable = require('formidable');const url = require('url');const fs = require("fs");let app = http.createServer((req, res) => { let {pathname} = url.parse(req.url); console.log(req.method, pathname); // 创建表单解析对象 const form = new formidable.IncomingForm(); //删除文件 对文件使用只能由服务器端来完成 if (pathname == "/upload/delete" && req.method === 'POST') { form.parse(req, (err, fields, files) => { let path = fields.filename; if (fs.statSync(path).isFile()) { try { fs.unlinkSync(fields.filename) } catch (e) { return e; } } res.end() }); } if (pathname == "/upload/images" || pathname == "/upload/data" && req.method === 'POST') { // 设置文件上传的位置 form.uploadDir = path.join(__dirname, "../../../", "/uploads/images"); // 保存传文件的后缀 form.keepExtensions = true; //设置为多文件上传 // form.multiples = true; //上传文件的最大巨细 form.maxFieldsSize = 60 * 1024 * 1024; // 解析表单 form.parse(req, (err, fields, files) => { // err错误处理处罚对象 // fields 对象范例 保存普通表单数据 // files对象范例 保存了和上传文件相关的数据 let filename = files.uploadFile.path.substring(0, files.uploadFile.path.lastIndexOf("\") + 1) + files.uploadFile.name; fs.renameSync(files.uploadFile.path, filename); //向欣赏器返回文件存储路径 res.write(filename) res.end() }) }});app.listen(3001, () => { console.log('文件上传功能代码块启动乐成');})
复制代码 PS : 如何在vue中使用json-server 使其能被跨域访问
安装json-server模块

来源:https://blog.csdn.net/liangmaxmin/article/details/111967236
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |