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 HTML中的table
Apr 15 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
Jul 01 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
实现高性能JavaScript之执行与加载
Jan 30 Javascript
遍历js中对象的属性和值的实例
Nov 21 Javascript
Bootstrap实现提示框和弹出框效果
Jan 11 Javascript
AngularJS 支付倒计时功能实现思路
Jun 05 Javascript
浅谈Vue项目骨架屏注入实践
Aug 05 Javascript
原生js实现html手机端城市列表索引选择城市
Jun 24 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 Javascript
解决新建一个vue项目过程中遇到的问题
Oct 22 Javascript
Ant Design moment对象和字符串之间的相互转化教程
Oct 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
COM in PHP (winows only)
2006/10/09 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
php生成随机颜色的方法
2014/11/13 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
JScript中的undefined和&quot;undefined&quot;的区别
2007/03/08 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
JS制作简单的三级联动
2015/03/18 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
JavaScript中日常收集常见的10种错误(推荐)
2017/01/08 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中装饰器的一个妙用
2015/02/08 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
Python如何调用外部系统命令
2019/08/07 Python
Python猜数字算法题详解
2020/03/01 Python
python数据分析工具之 matplotlib详解
2020/04/09 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
报关员个人职业生涯规划书
2014/03/12 职场文书
平安校园建设方案
2014/05/02 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
会计电算化专业求职信
2014/06/10 职场文书
走进敬老院活动总结
2014/07/10 职场文书
打架检讨书
2015/01/27 职场文书
高效课堂教学反思
2016/02/24 职场文书
OpenCV实现反阈值二值化
2021/11/17 Java/Android
css3应用示例:新增的选择器
2022/03/16 HTML / CSS