安装与引入
在引入 File Input 之前首先需要下载下列文件:
1 2 3
| bootstrap-fileinput/css/fileinput.min.css bootstrap-fileinput/js/fileinput_locale_zh.js bootstrap-fileinput/js/fileinput.min.js
|
上述文件可以在 File Input 的项目地址找到。 在下载好之后就需要添加如下代码进行引入:
1 2 3
| <link href="/static/css/fileinput.min.css" rel="stylesheet"> <script src="/static/js/fileinput.min.js" type="text/javascript"></script> <script src="/static/js/fileinput-zh.js" type="text/javascript"></script>
|
首先需要在页面添加一个 File Input 控件:
1 2 3 4
| <div class="form-group"> <input id="import_file" type="file" multiple class="file" name="userfile" data-overwrite-initial="false" data-min-file-count="1"> </div>
|
data-min-file-count
可以设定最少上传的文件数
在添加完之后就需要对控件进行初始化:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| $("#import_file").fileinput({ uploadUrl: "/upload_file", allowedFileExtensions: ['xls', 'xlsx'], overwriteInitial: false, language: 'zh', maxFileSize: 6000, maxFilesNum: 10, uploadAsync: true, allowedPreviewTypes: null, previewFileIconSettings: { 'xls': '<i class="fa fa-file-excel-o text-success"></i>' }, previewFileExtSettings: { 'xls': function (ext) { return ext.match(/(xls|xlsx)$/i); } }, slugCallback: function (filename) { return filename.replace('(', '_').replace(']', '_'); } });
|
后台处理:
1 2 3 4 5 6 7 8 9 10
| @app.route('/upload_file', methods=['POST']) def upload_file(): try: file = request.files.get('userfile') save_file_name = file.filename file.save(save_file_name) except KeyError: return [] else: return jsonify({'info': "上传成功"})
|
- 这里对上传的 Excel 文件进行了保存,返回上传成功的信息。
问题
- 在对 Excel 文件进行预览图标设置之前,如果通过按钮选择文件而不是拖拽,则会出现由预览文件所导致卡顿,在将 Excel 文件的预览设置为图标之后解决。
- 从后端直接返回字符串出现错误,改为返回 Json 格式数据后解决。
参考资料
- File Input 开发文档
- File Input Demo