Angular2-primeNG文件上传模块FileUpload使用详解


Posted in Javascript onJanuary 14, 2017

近期在学习使用Angular2做小项目,期间用到很多primeNG的模块。
本系列将结合实战总结angular2-primeNG各个模块的使用经验。

文件上传模块FileUploadModule

首先要在使用该组件的模块内导入文件上传模块

本例中为:

admin.module.ts

import {FileUploadModule} from 'primeng/primeng';
@NgModule({
  imports: [FileUploadModule]
})

在需要使用上传功能的组件的HTML页里添加:

demo-add.component.html:

<label>照片:</label>
<div>
  <!--上传组件 -->
   <p-fileUpload 
     name="uploadPhoto[]" 
     url="http://localhost:3333/api/upload"
     (onUpload)="onPhotoUpload($event)" accept="image/*" maxFileSize="1000000">
     <template pTemplate type="content">
       <ul *ngIf="photoFiles.length">
         <li *ngFor="let file of photoFiles">
           {{file.name}} - {{file.size}} bytes
         </li>
       </ul>
     </template>
   </p-fileUpload>
</div>
<!--如果图片上传成功,显示图片 -->
<div *ngIf="demo.photo">
  <img src="{{photoUrl}}">
</div>

在组件里写入事件处理及定义变量:

demo-add.component.ts:

class Demo{
  photo:String;
}
demo = new Demo();
photoFiles: any[] = [];
photoUrl:string;
onPhotoUpload(event) {
  this.demo.photo = JSON.parse(event.xhr.response).data.name;
  this.photoUrl ="upload/demo/"+this.demo.photo;
    for(let file of event.files) {
      this.photoFiles.push(file);
    }
  }

onPhotoUpload函数为onUpload(上传)异步事件触发的回调函数,接收一个$event参数,这里我们用到的是event.xhr,这是一个XMLHTTPREQUEST对象。我们用JSON.parse去解析,后台NODEJS代码:

router.post('/upload', function (req, res) {
  //文件
  const photoData = req.files.uploadPhoto[0];
  //文件路径
  const filePath = photoData.path;
  //读取文件
  fs.readFile(filePath, function (err, data) {
    //取时间戳用来命名
    const timestamp = Date.now();
    //取文件类型用来命名
    const type = photoData.type.split('/')[1];
    //命名文件
    const photo = timestamp + '.' + type;
    //存储路径
    const newPath = path.join(__dirname, '../', 'upload/demo/' + photo);
    //写入文件
    fs.writeFile(newPath, data, function (err) {
      //返回状态1表示成功,返回的数据是存储后的文件名
      const reply = {
        status: 1,
        data: {
          name: photo
        }
      };
      res.end(JSON.stringify(reply));
    })
  });
});

至此FileUpload异步上传文件,成功后显示文件的功能就实现了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
浅谈Javascript面向对象编程
Nov 15 Javascript
jquery模拟SELECT下拉框取值效果
Oct 23 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
Dec 16 Javascript
Jquery ajax基础教程
Nov 20 Javascript
轻松理解Javascript变量的相关问题
Jan 20 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 Javascript
vue使用websocket的方法实例分析
Jun 22 Javascript
2019最新21个MySQL高频面试题介绍
Feb 06 Javascript
微信小程序间使用navigator跳转传值问题实例分析
Mar 27 Javascript
Angular2 PrimeNG分页模块学习
Jan 14 #Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 #Javascript
详解jQuery事件
Jan 13 #Javascript
js实现固定宽高滑动轮播图效果
Jan 13 #Javascript
JavaScript利用闭包实现模块化
Jan 13 #Javascript
Vue.js基础知识小结
Jan 13 #Javascript
canvas实现流星雨的背景效果
Jan 13 #Javascript
You might like
解析dedecms空间迁移步骤详解
2013/05/15 PHP
编写php应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP对象实例化单例方法
2017/01/19 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
2019/10/11 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
JQuery 操作/获取table具体代码
2013/06/13 Javascript
javaScript 计算两个日期的天数相差(示例代码)
2013/12/27 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
2016/11/03 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
利用PM2部署node.js项目的方法教程
2017/05/10 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
解决一个微信号同时支持多个环境网页授权问题
2019/08/07 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
Python中functools模块的常用函数解析
2016/06/30 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
python 对xml解析的示例
2021/02/27 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
伊索寓言教学反思
2014/05/01 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
个人政治思想总结
2015/03/05 职场文书
员工工作表现自我评价
2015/03/06 职场文书
二年级数学教学反思
2016/02/16 职场文书
python pyhs2 的安装操作
2021/04/07 Python