使用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');
}

node.js服务器端下载、上传文件的更多相关文章

  1. Nodejs学习笔记(八)—Node.js + Express 实现上传文件功能(felixge/node-formidable)

    前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次 ...

  2. Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)

    目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...

  3. https 协议下服务器根据网络地址下载上传文件问题

    https 协议下服务器根据网络地址下载上传文件遇到(PKIX:unable to find valid certification path to requested target 的问题) 使用h ...

  4. js实现分段上传文件

    使用js实现分段上传文件,本文使用了FileReader对象,可参考:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader 1)获取文 ...

  5. git下载/上传文件提示:git did not exit cleanly

    问题:git操作下载/上传文件,提示信息如下 TortoiseGit-git did not exit cleanly (exit code 1) TortoiseGit-git did not ex ...

  6. 从Linux服务器下载上传文件

    首先要确定好哪两种的连接:Linux常用的有centors和unbantu两种版本,PC端Mac和Windows 如果在两个Linux之间传输,或Linux和Mac之间传输可以使用scp命令,类似于s ...

  7. JS 异步分段上传文件

    为了解决大文件上传 (PHP上传最大限制2GB) 同时为了解决文件上传是对服务器造成的压力 可以通过分段上传解决这个问题,这得益于HTML5开发的file API 前台代码: 引用了进度条插件myPr ...

  8. c#+js 使用formdata上传文件

    如果不是使用form表单submit的形式,我们可以手动通过formdata传值(针对文件上传等) 比如: <html> <head> <meta name=" ...

  9. Android 利用an框架快速实现网络请求(含下载上传文件)

    作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22573081来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架是完全 ...

随机推荐

  1. svn: Can’t convert string from ‘UTF-8’ to native encoding: 解决办法

    主要原因是linux的编码发生改动 只需该为 en_US.UFT-8即可 [具体操作可以查看]https://www.cnblogs.com/sz-xioabai/p/10523423.html

  2. width:100%以什么为基准的测试

    起初是遇到这样一个问题:当盒模型设为box-sizing:border-box;(移动端上经常这么干).子盒子的width:100%,子盒子的width等于父盒子contend的长度还是condend ...

  3. Centos7.4 更换国内yum源

    1.进入yum源配置文件夹.(配置之前先看看有没有安装wget命令呢,没的话可以先用当前的yum源安装一下再说.yum -y install wget) 2.转到配置文件目录  cd /etc/yum ...

  4. 关于VisualStudio性能分析数据中的独占样本数和非独占样本数的意义

    VisualStudio中自带有Profile工具进行性能性能分析,其中用得比较多的数据是函数调用时间,它主要有独占样本数和非独占样本数两个指标,关于这两个指标代表的意义,MSDN的解释比较文艺: 非 ...

  5. jQuery.isEmptyObject() 函数详解 转

    原文地址 http://www.365mini.com/page/jquery_isemptyobject.htm jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象. ...

  6. 29.最小的K个数

    题目描述:   输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路分析:   利用快速排序的partition函数,par ...

  7. EA添加时序图

    在项目浏览器的空白处右击 http://blog.csdn.net/craftsman1970/article/details/70877530 不同于大部分面向对象或者UML的书籍,在讨论完类图/对 ...

  8. Qt 学习之路 2(27):渐变

    Qt 学习之路 2(27):渐变 豆子 2012年11月20日 Qt 学习之路 2 17条评论 渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变 ...

  9. In linux shell, How to cp/rm files by time?

    find /path/to/folder/ -mtime 1 -exec rm {} \; // Deletes all Files modified yesterday

  10. 【算法笔记】B1006 换个格式输出整数

    1006 换个格式输出整数 (15 分) 让我们用字母 B 来表示“百”.字母 S 表示“十”,用 12...n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数 ...