From 26d75b99ed91be949bb19acff5697b0cc832cb18 Mon Sep 17 00:00:00 2001 From: ilya-bkv Date: Sun, 7 May 2023 22:10:44 +0300 Subject: [PATCH] [security] upload image from url to aws --- .../Editor/UploadModal/UploadModalContent.tsx | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/components/Editor/UploadModal/UploadModalContent.tsx b/src/components/Editor/UploadModal/UploadModalContent.tsx index 34c7cc74..47009e03 100644 --- a/src/components/Editor/UploadModal/UploadModalContent.tsx +++ b/src/components/Editor/UploadModal/UploadModalContent.tsx @@ -5,7 +5,7 @@ import { Button } from '../../_shared/Button' import { createSignal, Show } from 'solid-js' import { InlineForm } from '../InlineForm' import { hideModal } from '../../../stores/ui' -import { createDropzone, createFileUploader } from '@solid-primitives/upload' +import { createDropzone, createFileUploader, UploadFile } from '@solid-primitives/upload' import { handleFileUpload } from '../../../utils/handleFileUpload' import { useLocalize } from '../../../context/localize' import { Editor } from '@tiptap/core' @@ -33,9 +33,6 @@ export const UploadModalContent = (props: Props) => { .run() hideModal() } - const handleImageFormSubmit = async (value: string) => { - renderImage(value) - } const { selectFiles } = createFileUploader({ multiple: false, accept: 'image/*' }) const runUpload = async (file) => { @@ -52,6 +49,23 @@ export const UploadModalContent = (props: Props) => { } } + const handleImageFormSubmit = async (value: string) => { + try { + const data = await fetch(value) + const blob = await data.blob() + const file = new File([blob], 'convertedFromUrl', { type: data.headers.get('Content-Type') }) + const fileToUpload: UploadFile = { + source: blob.toString(), + name: file.name, + size: file.size, + file: file + } + await runUpload(fileToUpload) + } catch (error) { + console.error('[handleImageFormSubmit]', error) + } + } + const handleUpload = async () => { await selectFiles(async ([uploadFile]) => { await runUpload(uploadFile)