全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

angular2+nodejs实现图片上传功能

在使用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小时内与您取得联系。