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 相关文章推荐
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
Dec 25 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
js URL参数的拼接方法比较
Feb 15 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
Aug 27 Javascript
JS根据生日算年龄的方法
May 05 Javascript
jquery动态增加删减表格行特效
Nov 20 Javascript
微信小程序 数据遍历的实现
Apr 05 Javascript
javaScript 逻辑运算符使用技巧整理
May 03 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
JS中自定义事件的使用与触发操作实例分析
Nov 01 Javascript
详解为什么Vue中不要用index作为key(diff算法)
Apr 04 Javascript
js cavans实现静态滚动弹幕
May 21 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下关于中英数字混排的字符串分割问题
2010/04/06 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
2013/01/27 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
js两行代码按指定格式输出日期时间
2011/10/21 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
简述AngularJS的控制器的使用
2015/06/16 Javascript
javascript html5摇一摇功能的实现
2016/04/19 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
python 中的列表解析和生成表达式
2011/03/10 Python
python实现封装得到virustotal扫描结果
2014/10/05 Python
Python遍历目录的4种方法实例介绍
2015/04/13 Python
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
详解python里的命名规范
2018/07/16 Python
解决python Markdown模块乱码的问题
2019/02/14 Python
简单了解django索引的相关知识
2019/07/17 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
EJB实例的生命周期
2016/10/28 面试题
家长对孩子的感言
2014/03/10 职场文书
2014年党员个人工作总结
2014/12/02 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
二手房购房意向书
2015/05/09 职场文书
《角的度量》教学反思
2016/02/18 职场文书
z-index不起作用
2021/03/31 HTML / CSS