Heim  >  Artikel  >  Web-Frontend  >  Angular2+nodejs erzeugt einen Bild-Upload-Effekt

Angular2+nodejs erzeugt einen Bild-Upload-Effekt

php中世界最好的语言
php中世界最好的语言Original
2018-04-19 13:41:161429Durchsuche

Dieses Mal bringe ich Ihnen Angular2+nodejs, um den Bild-Upload-Effekt zu erzielen. Was sind die Vorsichtsmaßnahmen für den Bild-Upload-Effekt? sehen.

nodejs-Back-End-Code

 代码如下    
varexpress = require("express");
//网络请求模块
varrequest = require("request");
//引入nodejs文件系统模块
const fs = require('fs');
//引入body-parser
//包含在请求正文中提交的键/值对数据。
//默认情况下,它是未定义的,并在使用body-parser中间件时填充。
varbodyParser = require('body-parser');
varapp = express();
//解析 application/x-www-form-urlencoded,limit:ཐmb'用于设置请求的大小
//解决nodejs Error: request entity too large问题
app.use(bodyParser.urlencoded({ limit:ཐmb',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){
  varimgData = req.body.url;
  varbase64Data = imgData.replace(/^data:image\/\w+;base64,/,"");
  vardataBuffer =newBuffer(base64Data,'base64');
  fs.writeFile("image.png", dataBuffer,function(err) {
    if(err){
      res.send(err);
    }else{
      res.send("保存成功!");
    }
  });
})
 
varserver = app.listen(4444,function() {
  console.log('监听端口 4444');
});

Angular2-Front-End-Code

//上传图片
 /*
 *   let data = {
 *    size: �',
 *    type: 'image/jpeg',
 *    name: 'test.jpg',
 *    url: base64
 *   };
 *获取图片的base64码可以通过FileReader获取
 */
 uploadImage(data) {
  returnnewPromise((resolve, reject) => {
   let headers =newHeaders({
    'Content-Type':'application/x-www-form-urlencoded'
   });
   let options =newRequestOptions({
    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 keyinobj) {
    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));
    }
  }
   returnresult.join('&');
  }
  private toQueryPair(key, value) {
   if(typeofvalue =='undefined') {
    returnkey;
   }
   returnkey +'='+ encodeURIComponent(value ===null?'': String(value));
  }

Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben Weitere spannende Inhalte finden Sie auf anderen chinesischen PHP-Websites. Verwandte Artikel!

Empfohlene Lektüre:

JS-Implementierung des Popup-Fensters für die Anmeldung und Registrierung im Dropdown-Menü

Wie man mit HTTP-Hijacked-Floating umgeht Anzeigen

Zusammenfassung der Methoden zur Verbesserung der Node.js-Leistung

Das obige ist der detaillierte Inhalt vonAngular2+nodejs erzeugt einen Bild-Upload-Effekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:vue2.0 erhält den JS-Bin-WertNächster Artikel:vue2.0 erhält den JS-Bin-Wert