관리자 업로드 제한 설정 추가

This commit is contained in:
2026-07-01 17:58:30 +09:00
parent 129b68b939
commit e5d3eac2fd
17 changed files with 308 additions and 20 deletions

View File

@@ -1,4 +1,13 @@
<script setup>
import {
DEFAULT_UPLOAD_MAX_FILE_COUNT,
DEFAULT_UPLOAD_MAX_TOTAL_SIZE,
formatUploadSizeLimit,
getUploadFilesTotalSize,
normalizeUploadMaxFileCount,
normalizeUploadMaxTotalSize
} from '~/lib/upload-size-limit.js'
definePageMeta({
layout: 'admin'
})
@@ -42,6 +51,11 @@ const draggingUrls = ref([])
const uploadInputRef = ref(null)
const uploadingFiles = ref(false)
const deletingSelected = ref(false)
const { data: uploadSettings } = await useFetch('/admin/api/settings', {
key: 'admin-media-upload-settings'
})
const uploadMaxFileCount = computed(() => normalizeUploadMaxFileCount(uploadSettings.value?.uploadMaxFileCount || DEFAULT_UPLOAD_MAX_FILE_COUNT))
const uploadMaxTotalSize = computed(() => normalizeUploadMaxTotalSize(uploadSettings.value?.uploadMaxTotalSize || DEFAULT_UPLOAD_MAX_TOTAL_SIZE))
const { toast, showToast } = useAdminToast()
@@ -617,6 +631,19 @@ const uploadSelectedFiles = async (event) => {
}
const files = Array.from(input.files)
if (files.length > uploadMaxFileCount.value) {
showToast('error', `한 번에 업로드할 수 있는 파일은 최대 ${uploadMaxFileCount.value}개입니다.`)
input.value = ''
return
}
if (getUploadFilesTotalSize(files) > uploadMaxTotalSize.value) {
showToast('error', `한 번에 업로드 가능한 전체 용량을 초과했습니다. (최대 ${formatUploadSizeLimit(uploadMaxTotalSize.value)})`)
input.value = ''
return
}
const formData = new FormData()
files.forEach((file) => {