angular2+nodejs实现图片上传功能
发布时间 - 2026-01-11 00:23:31 点击率:次在使用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
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
详解MySQL数据库的安装与密码配置
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
如何快速搭建高效WAP手机网站吸引移动用户?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
jQuery 常见小例汇总
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何在阿里云部署织梦网站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
JS去除重复并统计数量的实现方法
如何快速建站并高效导出源代码?
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
bing浏览器学术搜索入口_bing学术文献检索地址
进行网站优化必须要坚持的四大原则
HTML 中动态设置元素 name 属性的正确语法详解
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
详解Oracle修改字段类型方法总结
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何用西部建站助手快速创建专业网站?
Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践
高端建站如何打造兼具美学与转化的品牌官网?
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
Android GridView 滑动条设置一直显示状态(推荐)
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
java获取注册ip实例
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
如何在云服务器上快速搭建个人网站?
如何正确下载安装西数主机建站助手?
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
历史网站制作软件,华为如何找回被删除的网站?
如何用已有域名快速搭建网站?
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
EditPlus 正则表达式 实战(3)
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
Android利用动画实现背景逐渐变暗
如何在建站宝盒中设置产品搜索功能?
如何在IIS7中新建站点?详细步骤解析
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
个人网站制作流程图片大全,个人网站如何注销?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
java ZXing生成二维码及条码实例分享

