관리자 업로드 제한 설정 추가
This commit is contained in:
@@ -29,20 +29,30 @@ import { isPostCardThumbnailUrl } from '../../lib/post-card-thumbnail-url.js'
|
||||
import { getTextareaCaretCoordinates } from '../../lib/textarea-caret-coordinates.js'
|
||||
import {
|
||||
buildDefaultUploadSizeLimits,
|
||||
DEFAULT_UPLOAD_MAX_FILE_COUNT,
|
||||
DEFAULT_UPLOAD_MAX_TOTAL_SIZE,
|
||||
formatUploadSizeLimit,
|
||||
getUploadFilesTotalSize,
|
||||
getMaxUploadBytesForKind,
|
||||
getUploadKind
|
||||
getUploadKind,
|
||||
normalizeUploadMaxFileCount,
|
||||
normalizeUploadMaxTotalSize
|
||||
} from '../../lib/upload-size-limit.js'
|
||||
import AdminSlashCommandIcon from './AdminSlashCommandIcon.vue'
|
||||
|
||||
const { toast, showToast } = useAdminToast()
|
||||
const runtimeConfig = useRuntimeConfig()
|
||||
const { data: uploadSettings } = useFetch('/admin/api/settings', {
|
||||
key: 'admin-markdown-editor-upload-settings'
|
||||
})
|
||||
const uploadSizeLimits = computed(() => buildDefaultUploadSizeLimits({
|
||||
image: Number(runtimeConfig.public.maxFileSize || 10485760),
|
||||
video: Number(runtimeConfig.public.maxVideoFileSize || 209715200),
|
||||
audio: Number(runtimeConfig.public.maxAudioFileSize || 52428800),
|
||||
document: Number(runtimeConfig.public.maxDocumentFileSize || 52428800)
|
||||
}))
|
||||
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 props = defineProps({
|
||||
modelValue: {
|
||||
@@ -3241,7 +3251,19 @@ const resolveUploadFetchErrorMessage = (error) => {
|
||||
* @returns {string|null} 초과 시 오류 메시지, 아니면 null
|
||||
*/
|
||||
const findUploadSizeLimitError = (files) => {
|
||||
for (const file of Array.from(files)) {
|
||||
const fileList = Array.from(files || [])
|
||||
|
||||
if (fileList.length > uploadMaxFileCount.value) {
|
||||
return `한 번에 업로드할 수 있는 파일은 최대 ${uploadMaxFileCount.value}개입니다.`
|
||||
}
|
||||
|
||||
const uploadTotalSize = getUploadFilesTotalSize(fileList)
|
||||
|
||||
if (uploadTotalSize > uploadMaxTotalSize.value) {
|
||||
return `한 번에 업로드 가능한 전체 용량을 초과했습니다. (최대 ${formatUploadSizeLimit(uploadMaxTotalSize.value)})`
|
||||
}
|
||||
|
||||
for (const file of fileList) {
|
||||
const uploadKind = getUploadKind(file.type, file.name)
|
||||
const maxBytes = getMaxUploadBytesForKind(uploadKind, uploadSizeLimits.value)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user