初始化仓库及v1.0.0提交

This commit is contained in:
2026-05-05 03:21:58 +08:00
commit 813bb02672
67 changed files with 5263 additions and 0 deletions

67
assets/js/upload.js Normal file
View File

@@ -0,0 +1,67 @@
const UploadManager = {
files: [], // 待发送的文件列表
allowedTypes: '.jpg,.jpeg,.png,.gif,.webp,.js,.ts,.py,.java,.cpp,.c,.html,.css,.json,.xml,.txt,.md,.go,.rs,.php,.rb,.sql,.yaml,.yml,.sh,.bat',
init() {
const btn = document.getElementById('uploadBtn');
if (btn) {
btn.addEventListener('click', () => this.openFileSelector());
}
},
openFileSelector() {
const input = document.createElement('input');
input.type = 'file';
input.accept = this.allowedTypes;
input.multiple = true;
input.onchange = (e) => this.handleFiles(e.target.files);
input.click();
},
async handleFiles(fileList) {
for (const file of fileList) {
const formData = new FormData();
formData.append('file', file);
try {
const res = await api.upload('/upload', formData);
this.files.push(res.data);
this.renderPreview();
} catch (err) {
alert('文件上传失败: ' + err.message);
}
}
},
renderPreview() {
const preview = document.getElementById('filePreview');
if (!preview) return;
preview.innerHTML = this.files.map((f, i) => `
<div class="file-preview-item">
<span>📎 ${this.escapeHtml(f.name)}</span>
<span class="remove-file" onclick="UploadManager.removeFile(${i})">×</span>
</div>
`).join('');
},
removeFile(index) {
this.files.splice(index, 1);
this.renderPreview();
},
getFiles() {
return this.files;
},
clearFiles() {
this.files = [];
this.renderPreview();
},
escapeHtml(text) {
const div = document.createElement('div');
div.textContent = text;
return div.innerHTML;
}
};