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读取cookie方法总结
Oct 31 Javascript
JS中捕获console.log()输出的方法
Apr 16 Javascript
ECMAScript6中Set/WeakSet详解
Jun 12 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
js省市联动效果完整实例代码
Dec 09 Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
Jan 09 Javascript
前端vue-cli项目中使用img图片和background背景图的几种方法
Nov 13 Javascript
vue更改数组中的值实例代码详解
Feb 07 Javascript
使用vue实现HTML页面生成图片的方法
Mar 12 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 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用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
Laravel框架实现的上传图片到七牛功能详解
2019/09/06 PHP
禁止空格提交表单的js代码
2013/11/17 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
解决webpack打包速度慢的解决办法汇总
2017/07/06 Javascript
jQuery完成表单验证的实例代码(纯代码)
2017/09/30 jQuery
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
Python通过matplotlib画双层饼图及环形图简单示例
2017/12/15 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python按比例随机切分数据的实现
2019/07/11 Python
对Django url的几种使用方式详解
2019/08/06 Python
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
大学生专业个人学习的自我评价
2013/10/26 职场文书
无故旷工检讨书
2014/01/26 职场文书
大学生水果店创业计划书
2014/01/28 职场文书
2014年五一劳动节社区活动总结
2014/04/14 职场文书
公司租房协议书
2014/10/14 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
升学宴答谢词
2015/01/05 职场文书
2016年先进班集体事迹材料
2016/02/26 职场文书
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
pandas中关于apply+lambda的应用
2022/02/28 Python
python实现手机推送 代码也就10行左右
2022/04/12 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python