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 相关文章推荐
学习ExtJS Panel常用方法
Oct 07 Javascript
Javascript中引用示例介绍
Feb 21 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
Oct 24 Javascript
js和jquery实现监听键盘事件示例代码
Jun 24 Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 Javascript
js 动态生成json对象、时时更新json对象的方法
Dec 02 Javascript
JavaScript实现星级评分
Jan 12 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
vue指令之表单控件绑定v-model v-model与v-bind结合使用
Apr 17 Javascript
vue实现带复选框的树形菜单
May 27 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 Javascript
JS实现可控制的进度条
Mar 25 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
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP编程计算文件或数组中单词出现频率的方法
2017/05/22 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
js可突破windows弹退效果代码
2008/08/09 Javascript
js window.onload 加载多个函数的方法
2009/11/02 Javascript
JavaScript 打地鼠游戏代码说明
2010/10/12 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
NodeJS学习笔记之Connect中间件模块(一)
2015/01/27 NodeJs
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
Python 绘图和可视化详细介绍
2017/02/11 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
CentOS7下python3.7.0安装教程
2018/07/30 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python算法题 链表反转详解
2019/07/02 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
入党申请人的自我鉴定
2013/12/01 职场文书
大学生工作推荐信范文
2013/12/02 职场文书
旷课检讨书3000字
2014/02/04 职场文书
计算机求职信
2014/07/02 职场文书
倡议书作文
2015/01/19 职场文书
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技
Flink 侧流输出源码示例解析
2022/09/23 Servers