一个轻量级且支持AJAX的文件上传器插件,为通过AJAX上传单个或多个文件提供了方便的解决方案。
它允许用户从本地选择文件,在浏览器中预览文件,并在选择后自动上传这些文件。
1.在文档中加载jQuery Uploader插件的文件。
<!-- Font Awesome Iconic Font Is Required --> <link rel="stylesheet" href="/path/to/cdn/font-awesome.min.css"> <!-- jQuery Is Required --> <script src="/path/to/cdn/jquery.min.js"></script> <!-- jQuery Uploader Files --> <link rel="stylesheet" href="./css/jquery.uploader.css"> <script src="./dist/jquery.uploader.min.js"></script>
2.为文件上传器创建一个输入字段。
<input type="text" id="example" value="" />
3.初始化插件以创建一个基本的文件上传器。
$("#example").uploader({
// options
})
4.启用多文件上传。
$("#example").uploader({
multiple: true,
})
5.设置上传模式:“url”、“file”或“custom”。
$("#example").uploader({
mode: Uploader.mode.file,
})
6.启用自动上传。默认值:true。
$("#example").uploader({
autoUpload: false,
})
7.定义预先选择的文件。
$("#example").uploader({
defaultValue: [
{
name: "jquery",
url: "/path/to/jquery.jpg"
}, {
name: "script",
url: "/path/to/script.png"
}
],
})
8.配置ajax上传。
$("#example").uploader({
ajaxConfig: {
url: "",
method: "post",
paramsBuilder: function (uploaderFile) {
let form = new FormData();
form.append("file", uploaderFile.file)
return form
},
ajaxRequester: function (config, uploaderFile, progressCallback, successCallback, errorCallback) {
$.ajax({
url: config.url,
contentType: false,
processData: false,
method: config.method,
data: config.paramsBuilder(uploaderFile),
success: function (response) {
successCallback(response)
},
error: function (response) {
console.error("Error", response)
errorCallback("Error")
},
xhr: function () {
let xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', function (e) {
let progressRate = (e.loaded / e.total) * 100;
progressCallback(progressRate)
})
return xhr;
}
})
},
responseConverter: function (uploaderFile, response) {
return {
url: response.data,
name: null,
}
},
},
})
9.事件处理程序。
$("#example").uploader()
.on("uploader-init", function() {
// do something
},
.on("before-upload", function(waitUploadFiles) {
// do something
},
.on("uploading", function(file) {
// do something
},
.on("upload-success", function(file, data) {
// do something
},
.on("upload-error", function() {
// do something
},
.on("file-add", function() {
// do something
},
.on("file-remove", function() {
// do something
},
10.API方法。
// upload files manually upload(); // clear all files clean(); // get all files uploadFiles();