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');
    }
  • 相关阅读:
    杭电 2602 Bone Collector
    Log4cpp介绍及使用
    DirectSound的应用
    unity3d 中加入�视频
    Android手机分辨率基础知识(DPI,DIP计算)
    MVC中使用AuthorizeAttribute做身份验证操作
    Java正則表達式入门
    使用Java高速实现进度条
    微软历史最高市值是多少?
    android 怎样内置/预置/预编译文件(运行程序,应用程序,apk, jar, lib 等随意文件)到系统中
  • 原文地址:https://www.cnblogs.com/xbblogs/p/9072722.html
Copyright © 2011-2022 走看看