taibai_shopping/app/templates/test_upload.html
2025-07-04 19:07:35 +08:00

379 lines
14 KiB
HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>COS上传测试</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h4>腾讯云COS上传测试</h4>
</div>
<div class="card-body">
<!-- 头像上传测试 -->
<div class="mb-4">
<h5>头像上传测试</h5>
<form id="avatarForm" enctype="multipart/form-data">
<div class="mb-3">
<input type="file" class="form-control" id="avatarFile" name="avatar" accept="image/*">
</div>
<button type="submit" class="btn btn-primary">上传头像</button>
</form>
<div id="avatarResult" class="mt-3"></div>
</div>
<hr>
<!-- 通用图片上传测试 -->
<div class="mb-4">
<h5>通用图片上传测试</h5>
<form id="imageForm" enctype="multipart/form-data">
<div class="mb-3">
<input type="file" class="form-control" id="imageFile" name="image" accept="image/*">
</div>
<div class="mb-3">
<select class="form-select" name="folder_type">
<option value="temp">临时文件</option>
<option value="product">商品图片</option>
<option value="review">评价图片</option>
</select>
</div>
<button type="submit" class="btn btn-success">上传图片</button>
</form>
<div id="imageResult" class="mt-3"></div>
</div>
<!-- 上传历史 -->
<div class="mb-4">
<h5>上传历史</h5>
<div id="uploadHistory"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
// 上传历史记录
let uploadHistory = [];
// 头像上传
document.getElementById('avatarForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData();
const fileInput = document.getElementById('avatarFile');
if (!fileInput.files[0]) {
showResult('avatarResult', false, '请选择文件');
return;
}
formData.append('avatar', fileInput.files[0]);
uploadFile('/upload/avatar', formData, 'avatarResult', '头像');
});
// 通用图片上传
document.getElementById('imageForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const fileInput = document.getElementById('imageFile');
if (!fileInput.files[0]) {
showResult('imageResult', false, '请选择文件');
return;
}
uploadFile('/upload/image', formData, 'imageResult', '图片');
});
// 上传文件函数
function uploadFile(url, formData, resultId, fileType) {
const resultDiv = document.getElementById(resultId);
resultDiv.innerHTML = '<div class="alert alert-info">上传中...</div>';
fetch(url, {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
if (data.success) {
showResult(resultId, true, `${fileType}上传成功!`, data.url);
addToHistory(fileType, data.url, data.file_key);
} else {
showResult(resultId, false, data.error || `${fileType}上传失败`);
}
})
.catch(error => {
showResult(resultId, false, `上传失败: ${error.message}`);
});
}
// 显示结果
function showResult(resultId, success, message, imageUrl = null) {
const resultDiv = document.getElementById(resultId);
const alertClass = success ? 'alert-success' : 'alert-danger';
let html = `<div class="alert ${alertClass}">${message}</div>`;
if (success && imageUrl) {
html += `
<div class="mt-2">
<img src="${imageUrl}" class="img-thumbnail" style="max-width: 200px;">
<p class="mt-2"><small>访问地址: <a href="${imageUrl}" target="_blank">${imageUrl}</a></small></p>
</div>
`;
}
resultDiv.innerHTML = html;
}
// 添加到历史记录
function addToHistory(type, url, fileKey) {
uploadHistory.unshift({
type: type,
url: url,
fileKey: fileKey,
time: new Date().toLocaleString()
});
updateHistoryDisplay();
}
// 更新历史记录显示
function updateHistoryDisplay() {
const historyDiv = document.getElementById('uploadHistory');
if (uploadHistory.length === 0) {
historyDiv.innerHTML = '<p class="text-muted">暂无上传记录</p>';
return;
}
let html = '<div class="list-group">';
uploadHistory.slice(0, 5).forEach(item => {
html += `
<div class="list-group-item">
<div class="d-flex justify-content-between align-items-start">
<div>
<h6 class="mb-1">${item.type}</h6>
<p class="mb-1"><small>${item.fileKey}</small></p>
<small class="text-muted">${item.time}</small>
</div>
<div>
<a href="${item.url}" target="_blank" class="btn btn-sm btn-outline-primary">查看</a>
</div>
</div>
</div>
`;
});
html += '</div>';
historyDiv.innerHTML = html;
}
// 初始化历史记录显示
updateHistoryDisplay();
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>COS上传测试</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<h4>腾讯云COS上传测试</h4>
</div>
<div class="card-body">
<!-- 头像上传测试 -->
<div class="mb-4">
<h5>头像上传测试</h5>
<form id="avatarForm" enctype="multipart/form-data">
<div class="mb-3">
<input type="file" class="form-control" id="avatarFile" name="avatar" accept="image/*">
</div>
<button type="submit" class="btn btn-primary">上传头像</button>
</form>
<div id="avatarResult" class="mt-3"></div>
</div>
<hr>
<!-- 通用图片上传测试 -->
<div class="mb-4">
<h5>通用图片上传测试</h5>
<form id="imageForm" enctype="multipart/form-data">
<div class="mb-3">
<input type="file" class="form-control" id="imageFile" name="image" accept="image/*">
</div>
<div class="mb-3">
<select class="form-select" name="folder_type">
<option value="temp">临时文件</option>
<option value="product">商品图片</option>
<option value="review">评价图片</option>
</select>
</div>
<button type="submit" class="btn btn-success">上传图片</button>
</form>
<div id="imageResult" class="mt-3"></div>
</div>
<!-- 上传历史 -->
<div class="mb-4">
<h5>上传历史</h5>
<div id="uploadHistory"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script>
// 上传历史记录
let uploadHistory = [];
// 头像上传
document.getElementById('avatarForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData();
const fileInput = document.getElementById('avatarFile');
if (!fileInput.files[0]) {
showResult('avatarResult', false, '请选择文件');
return;
}
formData.append('avatar', fileInput.files[0]);
uploadFile('/upload/avatar', formData, 'avatarResult', '头像');
});
// 通用图片上传
document.getElementById('imageForm').addEventListener('submit', function(e) {
e.preventDefault();
const formData = new FormData(this);
const fileInput = document.getElementById('imageFile');
if (!fileInput.files[0]) {
showResult('imageResult', false, '请选择文件');
return;
}
uploadFile('/upload/image', formData, 'imageResult', '图片');
});
// 上传文件函数
function uploadFile(url, formData, resultId, fileType) {
const resultDiv = document.getElementById(resultId);
resultDiv.innerHTML = '<div class="alert alert-info">上传中...</div>';
fetch(url, {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
if (data.success) {
showResult(resultId, true, `${fileType}上传成功!`, data.url);
addToHistory(fileType, data.url, data.file_key);
} else {
showResult(resultId, false, data.error || `${fileType}上传失败`);
}
})
.catch(error => {
showResult(resultId, false, `上传失败: ${error.message}`);
});
}
// 显示结果
function showResult(resultId, success, message, imageUrl = null) {
const resultDiv = document.getElementById(resultId);
const alertClass = success ? 'alert-success' : 'alert-danger';
let html = `<div class="alert ${alertClass}">${message}</div>`;
if (success && imageUrl) {
html += `
<div class="mt-2">
<img src="${imageUrl}" class="img-thumbnail" style="max-width: 200px;">
<p class="mt-2"><small>访问地址: <a href="${imageUrl}" target="_blank">${imageUrl}</a></small></p>
</div>
`;
}
resultDiv.innerHTML = html;
}
// 添加到历史记录
function addToHistory(type, url, fileKey) {
uploadHistory.unshift({
type: type,
url: url,
fileKey: fileKey,
time: new Date().toLocaleString()
});
updateHistoryDisplay();
}
// 更新历史记录显示
function updateHistoryDisplay() {
const historyDiv = document.getElementById('uploadHistory');
if (uploadHistory.length === 0) {
historyDiv.innerHTML = '<p class="text-muted">暂无上传记录</p>';
return;
}
let html = '<div class="list-group">';
uploadHistory.slice(0, 5).forEach(item => {
html += `
<div class="list-group-item">
<div class="d-flex justify-content-between align-items-start">
<div>
<h6 class="mb-1">${item.type}</h6>
<p class="mb-1"><small>${item.fileKey}</small></p>
<small class="text-muted">${item.time}</small>
</div>
<div>
<a href="${item.url}" target="_blank" class="btn btn-sm btn-outline-primary">查看</a>
</div>
</div>
</div>
`;
});
html += '</div>';
historyDiv.innerHTML = html;
}
// 初始化历史记录显示
updateHistoryDisplay();
</script>
</body>
</html>