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');
    }
  • 相关阅读:
    python基础--模块&包
    服务启动项 Start类型详解
    安全测试
    Dos命令之Netsh
    句柄(Handle)
    共享内存(shared memory)
    linux下查找文件、排序、查看文件内容
    Http协议详解
    Eclipse中搭建Python开发环境
    批处理[Batch]
  • 原文地址:https://www.cnblogs.com/xbblogs/p/9072722.html
Copyright © 2011-2022 走看看