在使用angular2进行图片上传的时候,遇到了各种各样的问题。在多番尝试之后最终成功上传图片,下面将我的方法分享给大家:

nodejs 后台代码
var express = require("express");
//网络请求模块
var request = require("request");
//引入nodejs文件系统模块
const fs = require('fs');
//引入body-parser
//包含在请求正文中提交的键/值对数据。
//默认情况下,它是未定义的,并在使用body-parser中间件时填充。
var bodyParser = require('body-parser');
var app = express();
//解析 application/x-www-form-urlencoded,limit:'20mb'用于设置请求的大小
//解决nodejs Error: request entity too large问题
app.use(bodyParser.urlencoded({ limit:'20mb',extended: true }));
//设置跨域访问
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
//上传图片
app.post('/upload',function(req,res){
var imgData = req.body.url;
var base64Data = imgData.replace(/^data:image\/\w+;base64,/, "");
var dataBuffer = new Buffer(base64Data, 'base64');
fs.writeFile("image.png", dataBuffer, function(err) {
if(err){
res.send(err);
}else{
res.send("保存成功!");
}
});
})
var server = app.listen(4444, function() {
console.log('监听端口 4444');
});
angular2前台代码
//上传图片
/*
* let data = {
* size: '125422',
* type: 'image/jpeg',
* name: 'test.jpg',
* url: base64
* };
*获取图片的base64码可以通过FileReader获取
*/
uploadImage(data) {
return new Promise((resolve, reject) => {
let headers = new Headers({
'Content-Type': 'application/x-www-form-urlencoded'
});
let options = new RequestOptions({
headers: headers
});
this.http.post("http://localhost:4444/upload", this.toQueryString(data),options)
.map(res => res.json())
.subscribe(data => { resolve(data), error => { reject(error) } })
})
}
// JSON参数序列化
private toQueryString(obj) {
let result = [];
for (let key in obj) {
key = encodeURIComponent(key);
let values = obj[key];
if (values && values.constructor == Array) {
let queryValues = [];
for (let i = 0, len = values.length, value; i < len; i++) {
value = values[i];
queryValues.push(this.toQueryPair(key, value));
}
result = result.concat(queryValues);
} else {
result.push(this.toQueryPair(key, values));
}
}
return result.join('&');
}
private toQueryPair(key, value) {
if (typeof value == 'undefined') {
return key;
}
return key + '=' + encodeURIComponent(value === null ? '' : String(value));
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# angular2
# nodejs
# 图片上传
# angularjs客户端实现压缩图片文件并上传实例
# 通过AngularJS实现图片上传及缩略图展示示例
# Angular下H5上传图片的方法(可多张上传)
# AngularJs上传前预览图片的实例代码
# angularjs实现多张图片上传并预览功能
# angularjs点击图片放大实现上传图片预览
# Angularjs上传图片实例详解
# Angularjs实现上传图片预览功能
# AngularJS实现图片上传和预览功能的方法分析
# Angular4实现图片上传预览路径不安全的问题解决
# 上传图片
# 并在
# 它是
# 可以通过
# 给大家
# 文件系统
# 大家多多
# 各种各样
# 情况下
# 序列化
# Requested
# PUT
# true
# Methods
# res
# header
# function
# req
# Origin
相关文章:
如何通过服务器快速搭建网站?完整步骤解析
寿县云建站:智能SEO优化与多行业模板快速上线指南
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何高效利用亚马逊云主机搭建企业网站?
如何在阿里云完成域名注册与建站?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
C++中引用和指针有什么区别?(代码说明)
教程网站设计制作软件,怎么创建自己的一个网站?
怎么将XML数据可视化 D3.js加载XML
如何选择域名并搭建高效网站?
如何在橙子建站上传落地页?操作指南详解
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
建站之星下载版如何获取与安装?
武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
建站之星后台密码遗忘或太弱?如何重置与强化?
网站制作企业,网站的banner和导航栏是指什么?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
济南企业网站制作公司,济南社保单位网上缴费步骤?
,想在网上投简历,哪几个网站比较好?
Android使用GridView实现日历的简单功能
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
山东云建站价格为何差异显著?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
如何在IIS7中新建站点?详细步骤解析
C++时间戳转换成日期时间的步骤和示例代码
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
在线制作视频网站免费,都有哪些好的动漫网站?
TestNG的testng.xml配置文件怎么写
Java解压缩zip - 解压缩多个文件或文件夹实例
建站之星免费模板:自助建站系统与智能响应式一键生成
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
香港服务器租用费用高吗?如何避免常见误区?
建站之星收费标准详解:套餐费用及年费价格表一览
如何在香港免费服务器上快速搭建网站?
山东网站制作公司有哪些,山东大源集团官网?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
网站制作网站,深圳做网站哪家比较好?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
网站制作价目表怎么做,珍爱网婚介费用多少?
制作网页的网站有哪些,电脑上怎么做网页?
如何用已有域名快速搭建网站?
建站之星客服服务时间及联系方式如何?
建站之星安装模板失败:服务器环境不兼容?
*请认真填写需求信息,我们会在24小时内与您取得联系。