content.tmpl 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <div id="content-page">
  2. <div class="nav-bar">
  3. <div class="nav-logo"></div>
  4. <div class="nav-menu">
  5. <div class="nav-menu-item">首页</div>
  6. <div class="nav-menu-item">文件管理</div>
  7. <div class="nav-menu-item">用户管理</div>
  8. </div>
  9. <div class="nav-user"></div>
  10. </div>
  11. <div class="content-body">
  12. <div id="drop-zone">拖拽文件到这里,或者点击选择文件</div>
  13. <input type="file" id="file-input" style="display: none;" webkitdirectory directory/>
  14. 存储文件信息<br/>
  15. 文件快捷上传<br/>
  16. 服务器信息查看(负载、内存、硬盘)<br/>
  17. 文件下载<br/>
  18. </div>
  19. </div>
  20. <script>
  21. const dropZone = document.getElementById('drop-zone');
  22. const fileInput = document.getElementById('file-input');
  23. // 点击区域,打开文件选择框
  24. dropZone.addEventListener('click', () => {
  25. fileInput.click();
  26. });
  27. // 文件选择框改变事件
  28. fileInput.addEventListener('change', (event) => {
  29. handleFiles(event.target.files);
  30. });
  31. // 拖拽事件处理
  32. dropZone.addEventListener('dragover', (event) => {
  33. event.preventDefault(); // 必须阻止默认行为才能触发 drop 事件
  34. dropZone.classList.add('dragover');
  35. });
  36. dropZone.addEventListener('dragleave', () => {
  37. dropZone.classList.remove('dragover');
  38. });
  39. dropZone.addEventListener('drop', (event) => {
  40. event.preventDefault(); // 阻止默认行为
  41. dropZone.classList.remove('dragover');
  42. const files = event.dataTransfer.files;
  43. handleFiles(files);
  44. });
  45. function handleFiles(files) {
  46. if (files.length > 0) {
  47. const formData = new FormData();
  48. // 遍历文件夹中的每个文件
  49. for (let i = 0; i < files.length; i++) {
  50. formData.append("files[]", files[i]); // 'files[]' 是后端接收的字段名
  51. }
  52. // 创建一个请求对象,上传文件到后端
  53. fetch("/file/upload", {
  54. method: "POST",
  55. body: formData,
  56. // headers: {
  57. // "Content-Type": "multipart/form-data",
  58. // }
  59. })
  60. .then(response => response.json())
  61. .then(data => {
  62. alert(data.message); // 返回的服务器响应
  63. })
  64. .catch(error => {
  65. alert("上传失败: " + error.message);
  66. });
  67. }
  68. }
  69. </script>