这篇文章给大家介绍如何在角中使用angular-file-upload上传文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强>附件上传强>
检定结果以附件形式上传。
这里先不考虑api <代码> 代码>。
实现的任务就是,点击选择文件,选择之后可以清楚掉该文件。
<>强插件介绍强>
用到了项目映入过的一个插件,angular-file-upload。
angular-file-upload 记者:https://github.com/nervgh/angular-file-upload
进入正题,我们如何安装,还是老样子安利波npm
npm install angular-file-upload
插件很简单,就是一个指令,我们在它提供给我们的指令中声明一个<代码>上传> 代码对象,这个对象表示在不同的时间下要执行什么操作,另一种观察者模式。
<强>功能实现强>
<强>使用指令强>
官网给出了该指令的很多种用法,这里选择最简单的,<代码> 代码>,单文件上传。
& lt; input 类型=癴ile", nv-file-select 上传=皍ploader"/祝辞
一个文件<代码> 代码>类型的<代码>输入> 代码,使用<代码> nv-file-select> 代码指令,传给该指令一个<代码>上传> 代码对象作为参数。
很简单的逻辑,新建一个<代码> fileupload> 代码的对象,然后重写它的<代码> onAfterAddingFile 代码>方法,就是在文件添加完成之后,也就是点击选择文件,选中文件,点击完成之后执行的一个方法。
此方法中我们直接对文件进行上传操作。
//,新建文件上传实例 时间=self.uploader new fileupload ();//,重写文件添加后的方法 时间=self.uploader.onAfterAddingFile 函数(fileItem), {//,才能打印日志 if 才能;(config.debug), {, console.info (& # 39; onAfterAddingFile& # 39;,, fileItem);,}//,才能上传文件 self.upload才能(fileItem); };//,传给视图 scope.uploader 美元;=,self.uploader;
如果将文件上传封装成指令,以上代码应该方法指令的控制器<代码> 代码>方法中执行! ! !
关于指令中的<代码>编译代码>,<代码>控制器代码>,<代码>链接> 代码的执行详解,请参考正确地使用角指令中的编译、控制器与链接。
<强>原因分析强>
可能是<代码> nv-file-select> 代码指令在实现时在代码> <代码>联系函数中进行各种事件的绑定,绑定时就需要我们的<代码>上传> 代码对象。
而如果我们将其放在了代码> <代码>联系函数里,该指令的代码> <代码>联系函数是晚于<代码> nv-file-select 代码>的代码> <代码>联系函数执行的,所以无效。
<强>上传强>
//,上传文件 时间=self.upload 功能(数据),{//,才能上传文件 AttachmentService.uploadFile才能(data._file) ,,,不要犹豫(function 成功(反应),{ ,,,,,,,//,将上传成功的附件绑定再ngModel中 ,,,,,,,scope.ngModel 美元;=,response.data; ,,,,,,,//,显示上传按钮 ,,,,,,,self.showClear (); ,,,,,},,function 误差(),{ ,,,,,,,//,提示用户上传失败 ,,,,,,,sweetAlert.swal ({ ,,,,,,,,,标题:,“对不起“, ,,,,,,,,,:,“上传的附件不能大于1米,请确认附件是否大于1 m" ,,,,,,,}); ,,,,,}); };
<>强清空强>
用户上传错了文件怎么办呢?添加一个清空按钮,如果上传文件之后就显示。
//,清空选中文件 时间=self.clear 函数(),{ self.deleteFile才能(scope.ngModel.id); };//,删除附件 时间=self.deleteFile 函数(id), { AttachmentService.deleteFile才能(id, function 成功(),{ ,,,//,将附件赋为空对象 ,,,scope.ngModel =,定义; ,,,//,隐藏清空按钮 ,,,self.hideClear (); ,,}); }; 时间=scope.clear self.clear;
但是这里会有一个问题,这里仅仅是删除了服务器上的附件,而文件的选中效果还是在的,这里还是显示选中的文件名的。
解决方案就是用一个<代码> 代码>形式把它套起来,将