使用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. 光猫烽火Hg220破解超级口令实用图文教程(亲测)

    1.用光猫背后的useradmin 帐号和密码登录 192.168.1.12.然后下载http://192.168.1.1/backupsettings.conf3.用记事本打开,ctrl+F,查找关 ...

  2. 洛谷P3711 仓鼠的数学题(伯努利数+多项式求逆)

    题面 传送门 题解 如果您不知道伯努利数是什么可以去看看这篇文章 首先我们把自然数幂和化成伯努利数的形式 \[\sum_{i=1}^{n-1}i^k={1\over k+1}\sum_{i=0}^k{ ...

  3. bzoj 3864: Hero meet devil(dp套dp)

    题面 给你一个只由\(AGCT\)组成的字符串\(S (|S| ≤ 15)\),对于每个\(0 ≤ .. ≤ |S|\),问 有多少个只由\(AGCT\)组成的长度为\(m(1 ≤ m ≤ 1000) ...

  4. root@localhost

    root代表当前的用户 也就是说你使用root的帐号登录的localhost是系统的名字 没有设置系统名字的时候默认名称是localhost/ 代表你当前所处的目录位置 你当前在根目录下# 是用户提示 ...

  5. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

  6. 190225RabbitMQ

    一.简单的RabbitMQ示例 生产者 # Author:Li Dongfei import pika connection = pika.BlockingConnection( pika.Conne ...

  7. ThinkCMF if 标签

    用法示例: <if condition="($name eq 1) OR ($name gt 100) "> value1 <elseif condition=& ...

  8. Hadoop文章

    hadoop入门--简单的MapReduce案例:https://blog.csdn.net/zhangt85/article/details/42077281?utm_source=blogxgwz ...

  9. SpeechVoiceSpeakFlags枚举类型的详细解释

    http://blog.csdn.net/zhou_xw6511/article/details/8313528

  10. chmod变更文件或目录的权限

    chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目录的权限, ...