找回密码
 免费注册

[Bootstrap] bootstrap5上传表单实例

[复制链接]
admin 发表于 2023-3-13 19:08:08 | 显示全部楼层 |阅读模式
  1. <!--点击添加按钮只弹出模态框,不执行其它动作-->
  2. <button type="button"
  3.     class="btn btn-outline-success btn-sm"
  4.     data-bs-toggle="modal"
  5.     data-bs-target="#uploadImgModal" title="添加图片">
  6. 添加图片
  7. </button>
  8. <!-- 上传图片模态框 -->
  9. <div class="modal fade" id="uploadImgModal" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
  10. <div class="modal-dialog modal-dialog-centered">
  11.     <div class="modal-content">
  12.         <div class="modal-header">
  13.             <h5 class="modal-title" id="updateImgModal-staticBackdropLabel">请上传新图片</h5>
  14.             <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
  15.         </div>
  16.         <div class="modal-body">
  17.             <div class="row mx-3">
  18.                 <!-- 图片类型:gif、png、jpeg -->
  19.                 <input type="file" id="new-img" name="new_img"
  20.                        class="form-control mb-2"
  21.                        accept="image/gif,image/png,image/jpeg"
  22.                        placeholder="支持jpg、png、gif格式图片">
  23.                 <span class="text-secondary text-opacity-50">
  24.                     <i class="fa fa-volume-down"></i>
  25.                     支持jpg、png、gif格式图片
  26.                 </span>
  27.             </div>
  28.         </div>
  29.         <div class="modal-footer">
  30.             <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">取消</button>
  31.             <!--执行上传操作,并关闭模态框-->
  32.             <button type="button" class="btn btn-primary" data-bs-dismiss="modal" onclick="uploadNewImg()">上传</button>
  33.         </div>
  34.     </div>
  35. </div>
  36. </div>
  37. <!--信息提示栏-->
  38. <div class="position-fixed top-50 start-50 translate-middle p-3" style="z-index: 11">
  39. <div id="info-toast" class="toast align-items-center" role="alert" aria-live="assertive" aria-atomic="true">
  40.     <div class="d-flex">
  41.         <div class="toast-body">
  42.             <!--成功信息-->
  43.             <span id="toast-info-success" class="text-success"></span>
  44.             <!--失败信息-->
  45.             <span id="toast-info-error" class="text-danger"></span>
  46.         </div>
  47.         <button type="button" class="btn-close me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
  48.     </div>
  49. </div>
  50. </div>
  51. <script>
  52. // 上传新图片
  53. function uploadNewImg(){
  54. // 构造表单数据
  55. let formData = new FormData();
  56. // --- 文件
  57. let file = $("#new-img")[0].files[0];
  58. formData.append("file",file);
  59. // 文件不能为空
  60. if(file){
  61.     // 发起上传操作
  62.     $.ajax({
  63.         url:'img/add',
  64.         type:'post',
  65.         data: formData,
  66.         contentType: false,
  67.         processData: false,
  68.         success:function(res){
  69.             if(res == "ok"){
  70.                 // 显示信息栏
  71.                 // --- 给提示框赋值
  72.                 $("#toast-info-success").text("上传成功!");
  73.                 $("#toast-info-error").text("");
  74.                 // --- 显示提示栏
  75.                 var toastBar = document.getElementById('info-toast');
  76.                 var toast = new bootstrap.Toast(toastBar);
  77.                 toast.show();
  78.             }else if(res == "type_no_support"){
  79.                 // --- 给提示框赋值:图片类型在input中有限制,如果绕过前端,会在后端再次验证
  80.                 $("#toast-info-success").text("");
  81.                 $("#toast-info-error").text("图片类型不匹配!");
  82.                 // --- 显示提示栏
  83.                 var toastBar = document.getElementById('info-toast');
  84.                 var toast = new bootstrap.Toast(toastBar);
  85.                 toast.show();
  86.             }
  87.         }
  88.     })

  89. }else{
  90.     // --- 给提示框赋值
  91.     $("#toast-info-success").text("");
  92.     $("#toast-info-error").text("请选择图片!");
  93.     // --- 显示提示栏
  94.     var toastBar = document.getElementById('info-toast');
  95.     var toast = new bootstrap.Toast(toastBar);
  96.     toast.show();
  97. }
  98. // 清空input文件表单:再次打开上传界面,不会保留上次的选项
  99. $("#new-main-img")[0].value = "";

  100. }
  101. </script>
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

QQ|Archiver|手机版|小黑屋|信息共享网

GMT+8, 2024-5-14 21:31 , Processed in 0.067328 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表