We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1.首先添加html代码
<input type="file" file-up-load="vm.fileUpLoad" />
2.接下来需要监听该控件的change事件,第一时间想到的肯定是 ng-change事件,但是实验会发现当选择要上传的文件后,是不会触发 该事件的,所以需要换一种方式解决这个问题,这里选择用指令的方式监听 onchange事件,从而触发对应的方法。
ng-change
angular .module('fileUpLoadModule',[]) .directive('fileUpLoad', function() { return { restrict: 'A', link: function(scope, element, attrs) { var onChangeHandler = scope.$eval(attrs.fileUpLoad); element.bind('change', onChangeHandler); } }; });
3.在controller里写响应的处理函数,处理文件的上传逻辑
vm.fileUpLoad = function(event) { var file = event.target.files[0]; var formData = new FormData(); formData.append('fileParam', file); };
首先通过event获取file对象,然后将file添加到FormData中,以便于向后台传送
4.通过$resource请求将文件信息发送给后台,但是需要注意的是,因为传输的是文件,而$resource的post请求默认添加application/json作为Content-Type,所以需要改变其Content-Type值,通过参考angular官方文档,修改方式如下:
$resource('http://example.com', null, { upLoadFile: { method: 'POST', headers: {'Content-Type': undefined} // $http默认会为post请求的Content-type设置为application/json, // 可以通过将它设置成undefined去删除默认设置的Content-type } });
5.可以使用express mock上传请求,可以使用中间件connect-multiparty
参考文档:
The text was updated successfully, but these errors were encountered:
不要采用删除当前input[type=file]这个节点,然后再重新创建dom这种方案,这样是不合理的。 解释如下: input[type=file]使用的是onchange去做,onchange监听的为input的value值,只有再内容发生改变的时候去触发,而value在上传文件的时候保存的是文件的内容,你只需要在上传成功的回调里面,将当前input的value值置空即可。 event.target.value='';
event.target.value='';
Sorry, something went wrong.
new FormData 不兼容IE9 怎么处理? 使用value 后台接收不到。
@milo-wjh 使用其他方式吧!http://www.ruanyifeng.com/blog/2012/08/file_upload.html
当然简单的方法,使用现成的库 https://github.com/danialfarid/ng-file-upload
No branches or pull requests
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
参考文档:
The text was updated successfully, but these errors were encountered: