Open Y-Phoenix opened 8 years ago
不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的。
解释如下:
input[type=file]使用的是onchange去做,onchange监听的为input的value值,只有再内容发生改变的时候去触发,而value在上传文件的时候保存的是文件的内容,你只需要在上传成功的回调里面,将当前input的value值置空即可。
event.target.value='';
new FormData 不兼容IE9 怎么处理? 使用value 后台接收不到。
@milo-wjh 使用其他方式吧!http://www.ruanyifeng.com/blog/2012/08/file_upload.html
当然简单的方法,使用现成的库 https://github.com/danialfarid/ng-file-upload
1.首先添加html代码
2.接下来需要监听该控件的change事件,第一时间想到的肯定是
ng-change
事件,但是实验会发现当选择要上传的文件后,是不会触发 该事件的,所以需要换一种方式解决这个问题,这里选择用指令的方式监听 onchange事件,从而触发对应的方法。3.在controller里写响应的处理函数,处理文件的上传逻辑
首先通过event获取file对象,然后将file添加到FormData中,以便于向后台传送
4.通过$resource请求将文件信息发送给后台,但是需要注意的是,因为传输的是文件,而$resource的post请求默认添加application/json作为Content-Type,所以需要改变其Content-Type值,通过参考angular官方文档,修改方式如下:
5.可以使用express mock上传请求,可以使用中间件connect-multiparty
参考文档: