Bootstrap-fileinput 插件的使用

 

1.bootstrap-fileinput 下载地址

https://github.com/kartik-v/bootstrap-fileinput.git

2.bootstrap-fileinput 使用

 input 标签 multiple="multiple" 表示可以多选文件

<div class="container-fluid">
    <div class="card border-0 shadow-sm">
        <div class="card-body">
          <h5 class="card-title">文件上传</h5>
          <h6 class="card-subtitle mb-2 ">bootstrap-fileinput是基于bootstrap的插件效果不错</h6>
          <hr>
          <input id="input-id" name="file-data" type="file" multiple="multiple">
        </div>
    </div>
</div>

<script src="lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="lib/jquery/dist/jquery.min.js"></script>
<script src="lib/bootstrap-fileinput/js/fileinput.min.js"></script>
<script>
    $(document).ready(function () {
      //设置fileinput属性
      $("#input-id").fileinput({
        language: 'zh',     //设置语言
        dropZoneEnabled: true,      //是否显示拖拽区域
        dropZoneTitle: "将图片拖放到这里",    //拖拽区域显示文字
        uploadUrl: 'http://127.0.0.1:3000/upload',  //后端接口
        allowedFileExtensions: ['jpg', 'png', 'gif', 'jpeg'],      //指定上传文件类型
        uploadAsync: true,                                         // 默认异步上传
        showUpload: true,                                          // 显示上传按钮
        showRemove: true,                                          // 显示移除按钮
        showPreview: true,                                         // 显示预览
        showCaption: false,                                        // 不显示标题
        browseClass: "btn btn-primary",                            // 按钮样式
        maxFileSize: 2048,                                         //上传文件最大值,单位kb
        maxFileCount: 5,                                           // 允许同时上传的最大文件个数
        msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!"
      }).on("fileuploaded", function(event,data) { //上传成功后回调
        console.log(data);
      });
    });
</script>
属性类型默认值描述
languageString'en'多语言设置,使用时需提前引入locales文件夹下对应的语言文件,中文zh,引入语言文件必须放在fileinput.js之后
showCaptionBooleantrue是否显示被选文件的简介
showBrowseBooleantrue是否显示浏览按钮
showPreviewBooleantrue是否显示预览区域
showRemoveBooleantrue是否显示移除按钮
showUploadBooleantrue是否显示上传按钮
showCancelBooleantrue是否显示取消按钮
showCloseBooleantrue是否显示关闭按钮
showUploadedThumbsBooleantrue这个属性是基于这样一个使用方法的:选择若干个文件后点击右下角上传按钮批量上传,待全部完成后再选择一批文件,此时之前上传成功的文件是否要保存。就是这个属性控制的。注意,点击文件缩略图下面的上传按钮不会导致之前的成功上传的文件消失,即使这里设置了true
browseOnZoneClickBooleanfalse
autoReplaceBooleanfalse是否自动替换当前图片,设置为true时,再次选择文件, 会将当前的文件替换掉。
generateFileIdObjectnull
previewClassString添加预览按钮的类属性
captionClassString添加标题类属性
frameClassString'krajee-default'针对每个缩略图的框架
mainClassString'file-caption-main'针对元素类属性
mainTemplateObjectnull
purifyHtmlBooleantrue
fileSizeGetterObjectnull
initialCaptionString
initialPreviewArray/Object[]通过这个参数,我们可以为文件区设置一些默认的缩略图
initialPreviewDelimiterString'$$'
initialPreviewAsDataBooleanfalse
initialPreviewFileTypeString'image'
initialPreviewConfigArray/Object[]
initialPreviewThumbTagsArray/Object[]
previewThumbTagsObject{}
initialPreviewShowDeleteBooleantrue
removeFromPreviewOnErrorBooleanfalse
deleteUrlString删除图片时的请求路径
deleteExtraDataObject{}删除图片时额外传入的参数
overwriteInitialBooleantrue
previewZoomButtonIconsObject{prev: '',next: '',toggleheader: '',fullscreen: '',borderless: '',close: ''},
previewZoomButtonClassesObject{prev: 'btn btn-navigate',next: 'btn btn-navigate',toggleheader: 'btn btn-default btn-header-toggle',fullscreen: 'btn btn-default',borderless: 'btn btn-default',close: 'btn btn-default'},
preferIconicPreviewBooleanfalse
preferIconicZoomPreviewBooleanfalse
allowedPreviewTypesundefinedundefined
allowedPreviewMimeTypesObjectnull
allowedFileTypesObjectnull接收的文件后缀,如['jpg', 'gif', 'png'],不填将不限制上传文件后缀类型
allowedFileExtensionsObjectnull指出带有哪些后缀名的文件才是被接受上传的,设置msgInvalidFileExtension可以个性化出现此错误时的错误信息
defaultPreviewContentObjectnull
customLayoutTagsObject{}
customPreviewTagsObject{}
previewFileIconString当文件无法被预览时出现在缩略图中的图标,默认是
previewFileIconClassString'file-other-icon'
previewFileIconSettingsObject{}可以将不同的后缀的文件有不同的缩略图图标
previewFileExtSettingsObject{}
buttonLabelClassString'hidden-xs'
browseIconString
browseClassString'btn btn-primary'指出了右下角选择按钮的样式。一般尽量不要用btn-sm和btn-lg,会和左边的输入框不协调
removeIconString删除按钮相关的属性
removeClassString'btn btn-default'
cancelIconString
cancelClassString'btn btn-default'
uploadIconString上传按钮相关的属性
uploadClassString'btn btn-default'
uploadUrlStringnull上传文件路径
uploadAsyncbooleantrue是否为异步上传
uploadExtraDataObject{}上传文件时额外传递的参数设置
zoomModalHeightnumber480
minImageWidthStringnull图片的最小宽度
minImageHeightStringnull图片的最小高度
maxImageWidthStringnull图片的最大宽度
maxImageHeightStringnull图片的最大高度
resizeImageBooleanfalse
resizePreferenceString'width'
resizeQualitynumber0.92
resizeDefaultImageTypeString'image/jpeg'
minFileSizenumber0单位为kb,上传文件的最小大小值
maxFileSizenumber0单位为kb,如果为0表示不限制文件大小
resizeDefaultImageTypenumber25600(25MB)
minFileCountnumber0表示同时最小上传的文件个数
maxFileCountnumber0表示允许同时上传的最大文件个数
validateInitialCountBooleanfalse
msgValidationErrorClassString'text-danger'
msgValidationErrorIconString
msgErrorClassString'file-error-message'
progressThumbClassString"progress-bar progress-bar-success progress-bar-striped active"
rogressClassString"progress-bar progress-bar-success progress-bar-striped active"
progressCompleteClassString"progress-bar progress-bar-success"
progressErrorClassString"progress-bar progress-bar-danger"
progressUploadThresholdnumber99
previewFileTypeString'image'预览文件类型,内置['image', 'html', 'text', 'video', 'audio', 'flash', 'object',‘other‘]等格式
elCaptionContainerStringnull
elCaptionTextStringnull设置标题栏提示信息
elPreviewContainerStringnull
elPreviewImageStringnull
elPreviewStatusStringnull
elErrorContainerStringnull
errorCloseButtonString×'
slugCallbackfunctionnull选择后未上传前 回调方法
dropZoneEnabledBooleantrue是否显示拖拽区域
dropZoneTitleClassString'file-drop-zone-title'拖拽区域类属性设置
fileActionSettingsObject{}设置预览图片的显示样式
otherActionButtonsString编码设置
textEncodingString'UTF-8'
ajaxSettingsObject{}
ajaxDeleteSettingsObject{}
showAjaxErrorDetailsBooleantrue

方法名描述
fileerror异步上传错误结果处理$('#uploadfile').on('fileerror', function(event, data, msg) {});
fileuploaded异步上传成功结果处理$("#uploadfile").on("fileuploaded", function (event, data, previewId, index) {})
filebatchuploaderror批量上传错误结果处理$('#uploadfile').on('filebatchuploaderror', function(event, data, msg) {});
filebatchuploadsuccess批量上传成功结果处理$('#uploadfile').on('filepreupload', function(event, data, previewId, index) {});
filebatchselected选择文件后处理事件$("#fileinput").on("filebatchselected", function(event, files) {});
upload文件上传方法$("#fileinput").fileinput("upload");
fileuploaded上传成功后处理方法$("#fileinput").on("fileuploaded", function(event, data, previewId, index) {});
fileresetPossible values: http, https, ws, wss.
fileclear点击浏览框右上角X 清空文件前响应事件$("#fileinput").on("fileclear",function(event, data, msg){});
filecleared点击浏览框右上角X 清空文件后响应事件$("#fileinput").on("filecleared",function(event, data, msg){});
fileimageuploaded在预览框中图片已经完全加载完毕后回调的事件

3. nodejs编写后端接收文件

项目结构

 在项目根目录下创建 app.js

const express = require('express');
const cors=require('cors');
const bodyParser = require('body-parser');
const app = express();

app.use(cors()) //处理跨域
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

//设置static文件夹下的所有文件能通过网址访问,用作静态文件web服务
app.use(express.static("./static"))

//路由配置
const upload=require('./router/upload.js')
app.use('/upload',upload)

 
//启动服务器
app.listen(3000,()=>{
  console.log('http://127.0.0.1:3000')
})

在router目录下创建 upload.js

const express = require('express');
const router = express.Router();
const fs = require('fs');
const multer = require('multer');
const path = require('path');

// 上传文件保存的路径
var uploadFolder = './static/upload/';

// storage 属性定制
var storage = multer.diskStorage({
	//保存的路径
	destination: function(req, file, cb) {
		cb(null, uploadFolder);
	},
	//保存的文件名
	filename: function(req, file, cb) {
		// 将时间戳设为文件名,比如 1478521468943.png
		let suffix = file.mimetype.split('/')[1]; //取原文件扩展名
		cb(null, Date.now() + '.' + suffix);
	}
});

// 通过 storage 选项来对 上传行为 进行定制化
var upload = multer({
	storage: storage
});

//图片上传必须用post方法
//upload.single的参数 file-data 要与前端from表单中input输入框的name属性的值保持一致,否则报错 MulterError: Unexpected field
router.post('/', upload.single('file-data'), (req, res) => {
	//给前端返回数据
	res.send({
		code: 0,
		msg: '上传成功',
		filename: JSON.stringify(req.file.filename) 
	})
	
});

module.exports = router;

upload.single的参数 file-data 要与前端from表单中input输入框的name属性的值保持一致,否则报错 MulterError: Unexpected field

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值