|
|
@@ -0,0 +1,55 @@
|
|
|
+function opennamu_file_preview() {
|
|
|
+ const input = document.getElementById('file_input');
|
|
|
+ const preview = document.getElementById('preview');
|
|
|
+ if (!input || !preview) return;
|
|
|
+
|
|
|
+ input.addEventListener('change', () => {
|
|
|
+ preview.innerHTML = '';
|
|
|
+
|
|
|
+ Array.from(input.files).forEach(file => {
|
|
|
+ const mime = file.type;
|
|
|
+
|
|
|
+ if (mime.startsWith('image/')) {
|
|
|
+ const img = document.createElement('img');
|
|
|
+
|
|
|
+ img.src = URL.createObjectURL(file);
|
|
|
+ img.onload = () => URL.revokeObjectURL(img.src);
|
|
|
+ img.style.maxWidth = '100%';
|
|
|
+
|
|
|
+ preview.appendChild(img);
|
|
|
+ } else if (mime === 'application/pdf') {
|
|
|
+ const embed = document.createElement('embed');
|
|
|
+
|
|
|
+ embed.src = URL.createObjectURL(file);
|
|
|
+ embed.type = 'application/pdf';
|
|
|
+ embed.style.width = '100px';
|
|
|
+ embed.style.height = '120px';
|
|
|
+ embed.style.marginRight = '0.5em';
|
|
|
+
|
|
|
+ preview.appendChild(embed);
|
|
|
+ } else if (mime.startsWith('text/') || mime === '') {
|
|
|
+ const reader = new FileReader();
|
|
|
+
|
|
|
+ reader.onload = () => {
|
|
|
+ const pre = document.createElement('pre');
|
|
|
+
|
|
|
+ pre.textContent = reader.result.slice(0, 200) + '...';
|
|
|
+ pre.style.border = '1px solid #ccc';
|
|
|
+ pre.style.padding = '0.5em';
|
|
|
+ pre.style.maxWidth = '200px';
|
|
|
+ pre.style.whiteSpace = 'pre-wrap';
|
|
|
+
|
|
|
+ preview.appendChild(pre);
|
|
|
+ };
|
|
|
+
|
|
|
+ reader.readAsText(file);
|
|
|
+ }
|
|
|
+
|
|
|
+ const p = document.createElement('p');
|
|
|
+
|
|
|
+ p.textContent = `파일명: ${file.name}, 크기: ${Math.round(file.size / 1024)} KB`;
|
|
|
+
|
|
|
+ preview.appendChild(p);
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|