관리자 미디어 업로드 규칙 분리

This commit is contained in:
2026-07-27 18:36:34 +09:00
parent a122ef46ac
commit e5e4febbbc
10 changed files with 178 additions and 23 deletions

View File

@@ -37,8 +37,13 @@ import {
resolvePreviewFocusPosition as resolveMarkdownPreviewFocusPosition
} from '../../lib/markdown-editor-focus.js'
import {
createMediaPickerFetchQuery,
createMediaUploadFormData,
createSelectedMediaInsertPlan,
filterImageUploadFiles,
findUploadSizeLimitError,
resolveImageUploadInsertTarget,
resolveUploadedMediaFiles,
resolveUploadFetchErrorMessage
} from '../../lib/markdown-editor-media.js'
import {
@@ -2820,14 +2825,12 @@ const fetchMediaItems = async () => {
try {
const response = await $fetch('/admin/api/media', {
query: {
paged: '1',
tab: 'library',
query: createMediaPickerFetchQuery({
page: mediaPickerPage.value,
pageSize: mediaPickerPageSize,
kind: mediaPickerKind.value,
search: mediaSearchQuery.value.trim() || undefined
}
searchQuery: mediaSearchQuery.value
})
})
applyMediaPickerResponse(response)
@@ -2967,17 +2970,12 @@ const uploadMediaFiles = async (files) => {
throw new Error(sizeLimitError)
}
const formData = new FormData()
Array.from(files).forEach((file) => {
formData.append('files', file)
})
const result = await $fetch('/admin/api/uploads', {
method: 'POST',
body: formData
body: createMediaUploadFormData(files)
})
return result.files || []
return resolveUploadedMediaFiles(result)
}
/**
@@ -3090,7 +3088,7 @@ const handlePaste = async (event) => {
return
}
const imageFiles = Array.from(event.clipboardData?.files || []).filter((file) => file.type.startsWith('image/'))
const imageFiles = filterImageUploadFiles(event.clipboardData?.files)
if (!imageFiles.length) {
const html = event.clipboardData?.getData('text/html')
@@ -3108,7 +3106,7 @@ const handlePaste = async (event) => {
}
event.preventDefault()
await uploadAndInsert(imageFiles, imageFiles.length > 1 ? 'gallery' : 'image')
await uploadAndInsert(imageFiles, resolveImageUploadInsertTarget(imageFiles))
}
/**
@@ -3122,14 +3120,14 @@ const handleDrop = async (event) => {
return
}
const imageFiles = Array.from(event.dataTransfer?.files || []).filter((file) => file.type.startsWith('image/'))
const imageFiles = filterImageUploadFiles(event.dataTransfer?.files)
if (!imageFiles.length) {
return
}
event.preventDefault()
await uploadAndInsert(imageFiles, imageFiles.length > 1 ? 'gallery' : 'image')
await uploadAndInsert(imageFiles, resolveImageUploadInsertTarget(imageFiles))
}
/**