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');
}
node.js服务器端下载、上传文件的更多相关文章
- Nodejs学习笔记(八)—Node.js + Express 实现上传文件功能(felixge/node-formidable)
前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子 上传功能命名用formidable实现,示例很简单! PS:最近比较忙,距上一次 ...
- Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
目录 前言 formidable简介 创建项目并安装formidable 实现上传功能 运行结果 部分疑惑解析 写在之后 前言 前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能---- ...
- https 协议下服务器根据网络地址下载上传文件问题
https 协议下服务器根据网络地址下载上传文件遇到(PKIX:unable to find valid certification path to requested target 的问题) 使用h ...
- js实现分段上传文件
使用js实现分段上传文件,本文使用了FileReader对象,可参考:https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader 1)获取文 ...
- git下载/上传文件提示:git did not exit cleanly
问题:git操作下载/上传文件,提示信息如下 TortoiseGit-git did not exit cleanly (exit code 1) TortoiseGit-git did not ex ...
- 从Linux服务器下载上传文件
首先要确定好哪两种的连接:Linux常用的有centors和unbantu两种版本,PC端Mac和Windows 如果在两个Linux之间传输,或Linux和Mac之间传输可以使用scp命令,类似于s ...
- JS 异步分段上传文件
为了解决大文件上传 (PHP上传最大限制2GB) 同时为了解决文件上传是对服务器造成的压力 可以通过分段上传解决这个问题,这得益于HTML5开发的file API 前台代码: 引用了进度条插件myPr ...
- c#+js 使用formdata上传文件
如果不是使用form表单submit的形式,我们可以手动通过formdata传值(针对文件上传等) 比如: <html> <head> <meta name=" ...
- Android 利用an框架快速实现网络请求(含下载上传文件)
作者:Bgwan链接:https://zhuanlan.zhihu.com/p/22573081来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. an框架的网络框架是完全 ...
随机推荐
- django-redis 使用规范
django-redis 基于 BSD 许可, 是一个使 Django 支持 Redis cache/session 后端的全功能组件. 1,安装 django-redis 最简单的方法就是用 pip ...
- loj #6226. 「网络流 24 题」骑士共存问题
#6226. 「网络流 24 题」骑士共存问题 题目描述 在一个 n×n\text{n} \times \text{n}n×n 个方格的国际象棋棋盘上,马(骑士)可以攻击的棋盘方格如图所示.棋盘上 ...
- 深度学习TensorFlow常用函数
tensorflow常用函数 TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU 还是 GPU, Tensor ...
- 最短路径SPFA算法(邻接表存法)
queue <int> Q; void SPFA (int s) { int i, v; for(int i=0; i<=n; i++) dist[i]=INF; //初始化每点i到 ...
- 条目八《永不建立auto_ptr的容器》
条目八<永不建立auto_ptr的容器> 重要的事说三次,永不建立auto_ptr的容器,永不建立auto_ptr的容器,永不建立auto_ptr的容器!!! 为什么? 实质是auto_p ...
- 收藏的一些有意思的CSS加载样式
先看下效果 全部代码贴出,自己粘贴调试测试: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- JavaWeb学习笔记(八)—— EL表达式
一.EL表达式概述 在JSP开发中,为了获取Servlet域对象中存储的数据,经常需要书写很多Java代码,这样的做法会使JSP页面混乱,难以维护.为此,在JSP2.0规范中提供了EL表达式.EL全名 ...
- 005 Genymotion模拟器的使用和逍遥模拟器的使用
1.Genymotion模拟器 (1)Genymotion Device Manager的图标 重启软件Android Studio后,选择菜单栏“View--Toolbar”,让工具栏显示出来,可以 ...
- Codeforces1114 D. Flood Fill (DP)(整个区间染成同色)
题意:连续的几个颜色相同的格子称为一个连通块.选一个点为起点,每个操作是把所在连通块变一个颜色,求把整个区间染成同色需要的最少操作数.(注意,每次只能改变所在连通块的颜色,不能任选连通块,除了最开始时 ...
- Phyton pymssql连接数据库
import pymssql # conn = pymssql.connect(server='longdabing',user='sa',password='sasa',database='long ...