fast-upload
v1.2.9
Published
html5 uploader and iframe uploader.
Downloads
5
Maintainers
Readme
fast-upload
npm i fast-upload --save
Attributes
var FastUpload = require('fast-upload')
var uploader = new FastUpload({
trigger: '#upload-icon',
name: 'image',
action: '/upload',
accept: 'image/*',
data: {'xsrf': 'hash'},
multiple: true,
error: function(file) {
alert(file);
},
success: function(response) {
alert(response);
},
progress: function(event, position, total, percent, files) {
console.log(percent);
}
});
下载源码后运行
npm install
node mobe
在 http://127.0.0.1:3000/demo.html 查看demo
trigger element|selector
trigger 唤出文件选择器,可以是:
- 选择器
- element
- jQuery Object
name string
name 即为 <input name="{{name}}">
的值,即上传文件时对应的 name。
action url
action 为 <form action="{{action}}">
的值,表单提交的地址。
accept string
支持的文件类型,比如 image/\*
为只上传图片类的文件。可选项。
multiple boolean
是否支持多文件上传。默认为 false。
data object
随表单一起要提交的数据。
error function
上传失败的回调函数。
success function
上传成功的回调函数。
progress function
上传的进度回调,不支持 IE9-。回调的参数分别为 ajaxEvent, 当前上传字节,总字节,进度百分比和当前文件列表。
Methods
链式调用:
var FastUpload = require('fast-upload')
var uploader = new FastUpload({
trigger: '#upload-icon',
name: 'image',
action: '/upload',
data: {'xsrf': 'hash'}
}).success(function(response) {
alert(response);
}).error(function(file) {
alert(file);
});
Data API
<a id="upload" data-name="image" data-action="/upload" data-data="a=a&b=b">Upload</a>
<script>
var FastUpload = new FastUpload({'trigger': '#upload'});
// more friendly way
// var FastUpload = new FastUpload('#upload');
FastUpload.success(function(response) {
alert(response);
});
</script>
Advanced
Demo in API section could not be controlled. When you select a file, it will
be submitted immediately. We can broke the chain with change
:
var FastUpload = require('fast-upload')
var uploader = new FastUpload({
trigger: '#upload-icon',
name: 'image',
action: '/upload',
data: {'xsrf': 'hash'}
}).change(function(files) {
for (var i=0; i<files.length; i++) {
console.log('you are selecting ' + files[i].name + ' Size: ' + files[i].size);
}
// Default behavior of change is
// this.submit();
}).success(function(response) {
alert(response);
});
Now you should handle it yourself:
$('#submit').click(function() {
uploader.submit();
});
Show Progress
It is impossible to show progress, but you can make a fake prgress.
var FastUpload = require('fast-upload')
var uploader = new FastUpload({
trigger: '#upload-icon',
name: 'image',
action: '/upload',
data: {'xsrf': 'hash'},
progress: function(e, position, total, percent, files) {
$('#progress').text('Uploading ... ' + percent + '%');
}
}).change(function(files) {
// before submit
$('#progress').text('Uploading ...');
this.submit();
}).success(function(response) {
$('#progress').text('Success');
alert(response);
});
IE hint
https://github.com/blueimp/jQuery-File-Upload/issues/1795