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 相关文章推荐
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
js对数字的格式化使用说明
Jan 12 Javascript
jQuery操作Select的Option上下移动及移除添加等等
Nov 18 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
js全选实现和判断是否有复选框选中的方法
Feb 17 Javascript
数据结构中的各种排序方法小结(JS实现)
Jul 23 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
浅析Javascript中双等号(==)隐性转换机制
Oct 27 Javascript
微信小程序视图容器(swiper)组件创建轮播图
Jun 19 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
JS如何实现手机端输入验证码效果
May 13 Javascript
详解微信小程序动画Animation执行过程
Sep 23 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实现分页工具类分享
2014/01/09 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
Smarty日期时间操作方法示例
2016/11/15 PHP
php及codeigniter使用session-cookie的方法(详解)
2017/04/06 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
2019/05/09 PHP
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
JQuery基础语法小结
2015/02/27 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
javascript动画之模拟拖拽效果篇
2016/09/26 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
element-ui 表格数据时间格式化的方法
2018/08/24 Javascript
vue 实现Web端的定位功能 获取经纬度
2019/08/08 Javascript
JS实现百度搜索框
2021/02/25 Javascript
python装饰器使用方法实例
2013/11/21 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
python绘制铅球的运行轨迹代码分享
2017/11/14 Python
Python2和Python3之间的str处理方式导致乱码的讲解
2019/01/03 Python
python语言是免费还是收费的?
2020/06/15 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
广告学毕业生求职信
2014/01/30 职场文书
公司营业员的自我评价
2014/03/04 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
品质标语大全
2014/06/21 职场文书
看雷锋电影观后感
2015/06/10 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
英语教学课后反思
2016/02/15 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
python实现手机推送 代码也就10行左右
2022/04/12 Python