zoukankan      html  css  js  c++  java
  • node.js服务器端下载、上传文件

    使用request 下载文件:

    安装依赖: npm i request
    sourceUrl下载源,
    targetUrl保存路径
    async function downLoadFile(sourceUrl, targetUrl) {
        let writeStream = fs.createWriteStream(targetUrl);
        let readStream = request(sourceUrl);
        readStream.pipe(writeStream);
        return await new Promise((resolve, reject) => {
            readStream.on('error', (err) => {
                writeStream.end();
                resolve(false);
            })
    
            readStream.on('end', () => {
                writeStream.end();
                resolve(true);
            });
        })
    }

    使用http下载文件

      setEncoding 防止乱码

    async function downLoadFile(sourceUrl, targetUrl) {
        return new Promise((resolve, reject) => {
            http.get(sourceUrl, res => {
                let fileData = "";
                res.setEncoding("binary");
                res.on("data", function (chunk) {
                    fileData += chunk;
                });
                res.on("end", function () {
                    fs.writeFile(targetUrl, fileData, "binary", function (err) {
                        resolve(err ? false : true);
                    });
                });
            });
        })
    }

    使用request服务器端上传文件:

    var formData = {
        name: 'Main.swf',
        data: fs.createReadStream(targefile)
    };
    await new Promise((resolve, reject) => {
        request.post({
            url: body.targetUrl,
            formData: formData
        }, function optionalCallback(err, httpResponse, body) {
            console.log(body);
            resolve(body);
        })
    }).catch(ex => {
        logs.info('上传文件报错:' + ex);
    });

    服务器端接收文件:

    async function testUpload(req,res){
        var form = new multiparty.Form(); //新建表单
        //设置编辑
        // form.encoding = 'utf-8';
        //设置文件存储路径
        form.uploadDir = "temp/";
        let [fields, files] = await new Promise((resolve, reject) => {
            form.parse(req, (err, fields, files) => {
                if (err) reject('test err');
                resolve([fields, files]);
            })
        })
    
        files = files['data'][0]; 
        let name = fields['name'][0];
        let url = 'temp/' + Date.now()+ name; //临时bolb文件新名字
        fs.renameSync(files.path, url); //修改临时文件名字
        res.send('ok');
    }
  • 相关阅读:
    (九)分类展示上
    (八)用户退出
    (七)用户登陆
    opencord视频截图
    (六)电子邮件
    (五)密码加密
    (四)用户注册
    (三)首页处理
    this关键字在继承中的使用
    03.swoole学习笔记--web服务器
  • 原文地址:https://www.cnblogs.com/xbblogs/p/9072722.html
Copyright © 2011-2022 走看看