From f7419acd92eb984650962401c76ad11aa3f28a9a Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Tue, 25 Jun 2024 13:24:31 +0800 Subject: [PATCH 01/44] update readme.md --- README.md | 67 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index fbbf086..2e6c68e 100644 --- a/README.md +++ b/README.md @@ -29,26 +29,53 @@ * 管理页面支持分页加载图片 ### 使用教程 -* 1.fork项目到自己的github -* 2.注册CloudFlare并开通R2服务 -![Upload](https://oss.tuqu.me/roim/blog/cf/r2.png) -* 3.找到Pages选项并且创建项目 -![Upload](https://oss.tuqu.me/roim/blog/cf/pages1.png) -* 4.选择项目创建方式 -![Upload](https://oss.tuqu.me/roim/blog/cf/pages2.png) -* 4.链接Github或GitLab并选需要构建的项目 - ![Upload](https://oss.tuqu.me/roim/blog/cf/pages3.png) - ![Upload](https://oss.tuqu.me/roim/blog/cf/pages4.png) -* 5.设置环境变量 -> 因为cloudflare默认的node版本较低需要手动指定版本,否在会导致构建失败. - ![Upload](https://oss.tuqu.me/roim/blog/cf/pages5.png) -* 6.设置项目的函数信息绑定R2和KV服务 -![Upload](https://oss.tuqu.me/roim/blog/cf/pages6.png) -![Upload](https://oss.tuqu.me/roim/blog/cf/pages7.png) -* 7.构建项目,提示成功即可访问 - ![Upload](https://oss.tuqu.me/roim/blog/cf/pages8.png) - -> 注意:Pages的函数变量名称需要于项目的变量名称一致,如果需要修改functions里面的Env名空间,对应的文件是`[[path]].ts` +1. fork项目到自己的github + +2. 注册CloudFlare并开通R2服务 + ![Upload](https://oss.tuqu.me/roim/blog/cf/r2.png) + +3. 找到Pages选项并且创建项目 + ![Upload](https://oss.tuqu.me/roim/blog/cf/pages1.png) + +4. 选择项目创建方式 + ![Upload](https://oss.tuqu.me/roim/blog/cf/pages2.png) + +5. 链接Github或GitLab并选需要构建的项目 + ![Upload](https://oss.tuqu.me/roim/blog/cf/pages3.png) + ![Upload](https://oss.tuqu.me/roim/blog/cf/pages4.png) + + 链接到仓库后,,选择`Vue框架预设`,,保存并部署 + + image-20240625125904324 + +6. 设置环境变量`BASE_URL` + + image-20240625125627118 + +7. 设置项目的函数信息,绑定R2和KV服务 + image-20240625125529675 + + ```typescript + // 请确保变量名与`functions/rest/[[path]].ts`中一致 + // ./functions/rest/[[path]].ts + + export interface Env { + BASE_URL: string + XK: KVNamespace + PICX: R2Bucket + } + ``` + + > 注意:Pages的函数变量名称需要于项目的变量名称一致,如果需要修改functions里面的Env名空间,对应的文件是`[[path]].ts` + +8. 设置`PICX_AUTH_TOKEN` + + 前往绑定的KV中,添加`PICX_AUTH_TOKEN`条目,填写Token + + image-20240625130106257 + +9. 重试部署,提示成功即可使用 + ### 图床截图 ![Upload](https://oss.tuqu.me/roim/blog/5.png) From c9142ec86d9399d34efc33d8c1ec1db17258d989 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Mon, 1 Jul 2024 16:53:50 +0800 Subject: [PATCH 02/44] e --- functions/rest/routes/index.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 9cec42f..dc76051 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -46,7 +46,19 @@ router.post('/checkToken', async (req : Request, env : Env) => { // list image router.post('/list', auth, async (req : Request, env : Env) => { - const data = await req.json() as ImgReq + var data; + + try{ + data= await req.json() as ImgReq + + }catch(e){ + let url=new URL(req.url) + data={ + limit:url.searchParams.get("limit"), + delimiter:url.searchParams.get("delimiter"), + } + } + if (!data.limit) { data.limit = 10 } From ab1f3395e8b3a6931750ecd566157504c2f74e34 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Mon, 1 Jul 2024 17:04:38 +0800 Subject: [PATCH 03/44] cross --- functions/rest/[[path]].ts | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/rest/[[path]].ts b/functions/rest/[[path]].ts index 557e39a..6a3cfd2 100644 --- a/functions/rest/[[path]].ts +++ b/functions/rest/[[path]].ts @@ -14,6 +14,7 @@ export const onRequest: PagesFunction = async (context : EventContext) => { try { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const response: Response | undefined = await router.handle(context.request, context.env); + response?.headers.set('Access-Control-Allow-Origin', '*'); return response ?? error(404, 'not found'); } catch (err) { return error(500, (err as Error).message); From 5424a017a432b19ae14a41a5dcc7025e11db194a Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Wed, 3 Jul 2024 16:25:20 +0800 Subject: [PATCH 04/44] 666 --- functions/rest/routes/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index dc76051..f88727e 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -15,6 +15,8 @@ const auth = async (request : Request, env : Env) => { const token = request.headers.get('Authorization') if (!token) { return json(NotAuth()) + }else if(!request.url.includes("list")){ + return json(FailCode("list fail", StatusCode.NotAuth)) } // with kv equal const authKey = await env.XK.get('PICX_AUTH_TOKEN') From 8920c648df4ebbb38d428091eb137008a1541ee8 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Wed, 3 Jul 2024 16:28:26 +0800 Subject: [PATCH 05/44] 1 --- functions/rest/routes/index.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index f88727e..36d085b 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -15,8 +15,6 @@ const auth = async (request : Request, env : Env) => { const token = request.headers.get('Authorization') if (!token) { return json(NotAuth()) - }else if(!request.url.includes("list")){ - return json(FailCode("list fail", StatusCode.NotAuth)) } // with kv equal const authKey = await env.XK.get('PICX_AUTH_TOKEN') @@ -24,7 +22,9 @@ const auth = async (request : Request, env : Env) => { return json(Fail("system not auth setting")) } if (authKey != token) { - return json(FailCode("auth fail", StatusCode.NotAuth)) + if(!request.url.includes("list")){ + return json(FailCode("auth fail"+request.url, StatusCode.NotAuth)) + } } // return new Response('Not Authenticated', { status: 401 }) } From b3ee0f713c44a99d9200404edce7b2b1da3d4c62 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Wed, 3 Jul 2024 17:55:06 +0800 Subject: [PATCH 06/44] ss --- functions/rest/routes/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 36d085b..f2840e3 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -123,7 +123,7 @@ router.post('/upload', auth, async (req: Request, env : Env) => { }) as R2Object if (object || object.key) { urls.push({ - key: object.key, + key: 'runoilbus/'+object.key, size: object.size, url: `${env.BASE_URL}/rest/${object.key}`, filename: item.name From a7a7976ec8880dcd2515b8960eb60e4cbbdeb20a Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Wed, 3 Jul 2024 18:10:44 +0800 Subject: [PATCH 07/44] q --- functions/rest/routes/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index f2840e3..fe1204c 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -123,7 +123,7 @@ router.post('/upload', auth, async (req: Request, env : Env) => { }) as R2Object if (object || object.key) { urls.push({ - key: 'runoilbus/'+object.key, + key: '/runoilbus/'+object.key, size: object.size, url: `${env.BASE_URL}/rest/${object.key}`, filename: item.name From 75a6ec64757d50784dfb320df0517ed599d344a3 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Wed, 3 Jul 2024 18:20:04 +0800 Subject: [PATCH 08/44] 9 --- functions/rest/routes/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index fe1204c..5651461 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -123,10 +123,10 @@ router.post('/upload', auth, async (req: Request, env : Env) => { }) as R2Object if (object || object.key) { urls.push({ - key: '/runoilbus/'+object.key, + key: "123"+object.key, size: object.size, url: `${env.BASE_URL}/rest/${object.key}`, - filename: item.name + filename: "456"+item.name }) } } From b1723441531037df8c46b69bde4f00d7c46caf4f Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Wed, 3 Jul 2024 18:24:25 +0800 Subject: [PATCH 09/44] path --- functions/rest/routes/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 5651461..d41d05e 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -118,7 +118,7 @@ router.post('/upload', auth, async (req: Request, env : Env) => { const header = new Headers() header.set("content-type", fileType) header.set("content-length", `${item.size}`) - const object = await env.PICX.put(filename, item.stream(), { + const object = await env.PICX.put("runoilbus/"+filename, item.stream(), { httpMetadata: header, }) as R2Object if (object || object.key) { From d2879f9058b0abb08f7def2f255c48815f6ccd8b Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 13:32:23 +0800 Subject: [PATCH 10/44] g --- package.json | 2 +- src/views/ManageImages.vue | 4 +-- src/views/UploadImages.vue | 69 +++++++++++++++++++++++++++++++++++--- 3 files changed, 68 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 6e79c3d..b77e726 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "postcss": "^8.4.5", "tailwindcss": "^3.2.4", "typescript": "^4.4.4", - "vite": "^3.2.5", + "vite": "^3.2.10", "wrangler": "^2.9.0" } } diff --git a/src/views/ManageImages.vue b/src/views/ManageImages.vue index fff7e35..0b549a1 100644 --- a/src/views/ManageImages.vue +++ b/src/views/ManageImages.vue @@ -80,10 +80,10 @@ const addFolder = () => { name: value }).then((res) => { console.log(res) - ElMessage.success('文件见创建成功') + ElMessage.success('文件夹创建成功') listImages() }).catch(() => { - ElMessage.error('文件见创建失败') + ElMessage.error('文件夹创建失败') }).finally(() => { loading.value = false }) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 031dd79..0c78382 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -40,7 +40,7 @@ -
+
- +
+ +
已选择 {{ convertedImages.length }} 张,共 {{ formatBytes(imagesTotalSize) }} @@ -105,12 +114,15 @@ import { faUpload } from '@fortawesome/free-solid-svg-icons' import { computed, onMounted, onUnmounted, ref } from 'vue' import LoadingOverlay from '../components/LoadingOverlay.vue' import formatBytes from '../utils/format-bytes' -import {ElNotification as elNotify } from 'element-plus' +import {ElAutocomplete,ElNotification as elNotify } from 'element-plus' import { requestUploadImages } from '../utils/request' import { useRouter } from 'vue-router' import ImageBox from '../components/ImageBox.vue' import ResultList from '../components/ResultList.vue' import type { ConvertedImage, ImgItem } from '../utils/types' +import { requestListImages, requestDeleteImage, createFolder } from '../utils/request' +import type { ImgItem, ImgReq, Folder } from '../utils/types' + const convertedImages = ref([]) const imgResultList = ref([]) const imagesTotalSize = computed(() => @@ -121,6 +133,39 @@ const imageSizeLimit = 20 * 1024 * 1024 const input = ref() const loading = ref(false) const router = useRouter() +const state1 = ref('') + +interface RestaurantItem { + value: string + link: string +} +const createFilter = (queryString: string) => { + return (restaurant: RestaurantItem) => { + return ( + restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0 + ) + } +} +const loadAll = () => { + return [ + { value: 'vue', link: 'https://github.com/vuejs/vue' }, + { value: 'element', link: 'https://github.com/ElemeFE/element' }, + { value: 'cooking', link: 'https://github.com/ElemeFE/cooking' }, + { value: 'mint-ui', link: 'https://github.com/ElemeFE/mint-ui' }, + { value: 'vuex', link: 'https://github.com/vuejs/vuex' }, + { value: 'vue-router', link: 'https://github.com/vuejs/vue-router' }, + { value: 'babel', link: 'https://github.com/babel/babel' }, + ] +} + +const restaurants = ref([]) +const querySearch = (queryString: string, cb: any) => { + const results = queryString + ? restaurants.value.filter(createFilter(queryString)) + : restaurants.value + // call callback function to return suggestions + cb(results) +} const onInputChange = () => { appendConvertedImages(input.value?.files) @@ -134,6 +179,8 @@ const onPaste = (e: ClipboardEvent) => { onMounted(() => { document.onpaste = onPaste + restaurants.value = loadAll() + updateDir() }) onUnmounted(() => { @@ -179,7 +226,21 @@ const appendConvertedImages = async (files: FileList | null | undefined) => { } loading.value = false } - +const updateDir = () => { + loading.value = true + requestListImages( { + limit: 100, + delimiter: '' + }).then((data) => { + console.log(data) + console.log(data.prefixes) + }).catch((e) => { + console.log(e) + }) + .finally(() => { + loading.value = false + }) +} const removeImage = (tmpSrc: string) => { convertedImages.value = convertedImages.value.filter((item) => item.tmpSrc !== tmpSrc) URL.revokeObjectURL(tmpSrc) From 378b4886255441ed0dbb4072fb56c326de52879f Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 13:34:57 +0800 Subject: [PATCH 11/44] 2 --- src/views/UploadImages.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 0c78382..c1db315 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -121,7 +121,7 @@ import ImageBox from '../components/ImageBox.vue' import ResultList from '../components/ResultList.vue' import type { ConvertedImage, ImgItem } from '../utils/types' import { requestListImages, requestDeleteImage, createFolder } from '../utils/request' -import type { ImgItem, ImgReq, Folder } from '../utils/types' +import type { ImgReq, Folder } from '../utils/types' const convertedImages = ref([]) const imgResultList = ref([]) From 600590bf86ae57a3a88f2a2f439d0a5627b9b70d Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 13:54:35 +0800 Subject: [PATCH 12/44] 5 --- functions/rest/routes/index.ts | 12 ++++++++++++ src/utils/request.ts | 1 + src/views/UploadImages.vue | 20 ++++++-------------- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index d41d05e..f86ab49 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -101,6 +101,18 @@ router.post('/list', auth, async (req : Request, env : Env) => { })) }) +router.post('/listdir', auth, async (req : Request, env : Env) => { + + // console.log(include) + const options = { + prefix: '/' + } + const list = await env.PICX.list(options) + console.log(list) + const objs = list.objects + + return objs +}) // batch upload file router.post('/upload', auth, async (req: Request, env : Env) => { const files = await req.formData() diff --git a/src/utils/request.ts b/src/utils/request.ts index 260c8c0..611b917 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -50,6 +50,7 @@ request.interceptors.response.use( ) export const requestListImages = (data : ImgReq): Promise => request.post('/rest/list', data) +export const requestListDir = (): Promise => request.post('/rest/listdir', data) export const requestUploadImages = (data: FormData) : Promise => request.post('/rest/upload', data) export const createFolder = (data: Folder) => request.post('/rest/folder', data) export const checkToken = (data: AuthToken) => request.post('/rest/checkToken', data) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index c1db315..4d0d048 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -115,7 +115,7 @@ import { computed, onMounted, onUnmounted, ref } from 'vue' import LoadingOverlay from '../components/LoadingOverlay.vue' import formatBytes from '../utils/format-bytes' import {ElAutocomplete,ElNotification as elNotify } from 'element-plus' -import { requestUploadImages } from '../utils/request' +import { requestUploadImages,requestListDir } from '../utils/request' import { useRouter } from 'vue-router' import ImageBox from '../components/ImageBox.vue' import ResultList from '../components/ResultList.vue' @@ -227,19 +227,11 @@ const appendConvertedImages = async (files: FileList | null | undefined) => { loading.value = false } const updateDir = () => { - loading.value = true - requestListImages( { - limit: 100, - delimiter: '' - }).then((data) => { - console.log(data) - console.log(data.prefixes) - }).catch((e) => { - console.log(e) - }) - .finally(() => { - loading.value = false - }) + // return + requestListDir() + .then(res=>{ + console.log(res) + }) } const removeImage = (tmpSrc: string) => { convertedImages.value = convertedImages.value.filter((item) => item.tmpSrc !== tmpSrc) From c52f5145383218d50e8606f91f31e0725cea0405 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 13:59:35 +0800 Subject: [PATCH 13/44] 8 --- functions/rest/routes/index.ts | 2 +- src/utils/request.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index f86ab49..528ffd4 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -101,7 +101,7 @@ router.post('/list', auth, async (req : Request, env : Env) => { })) }) -router.post('/listdir', auth, async (req : Request, env : Env) => { +router.post('/listdir', auth, async ( env : Env) => { // console.log(include) const options = { diff --git a/src/utils/request.ts b/src/utils/request.ts index 611b917..3a4393d 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -50,7 +50,7 @@ request.interceptors.response.use( ) export const requestListImages = (data : ImgReq): Promise => request.post('/rest/list', data) -export const requestListDir = (): Promise => request.post('/rest/listdir', data) +export const requestListDir = (): Promise => request.post('/rest/listdir') export const requestUploadImages = (data: FormData) : Promise => request.post('/rest/upload', data) export const createFolder = (data: Folder) => request.post('/rest/folder', data) export const checkToken = (data: AuthToken) => request.post('/rest/checkToken', data) From 4b4df786170fcf958a4abe351e59f770b6631b90 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:04:37 +0800 Subject: [PATCH 14/44] 5 --- functions/rest/routes/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 528ffd4..762c6f5 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -105,7 +105,9 @@ router.post('/listdir', auth, async ( env : Env) => { // console.log(include) const options = { - prefix: '/' + prefix: '/', + limit: 100, + delimiter: '/', } const list = await env.PICX.list(options) console.log(list) From a4a26d514fd69a23dcb21408f87785b7e9494dc1 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:09:19 +0800 Subject: [PATCH 15/44] 5 --- functions/rest/routes/index.ts | 40 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 762c6f5..ef5f7ba 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -82,23 +82,23 @@ router.post('/list', auth, async (req : Request, env : Env) => { prefix: include } const list = await env.PICX.list(options) - // console.log(list) - const truncated = list.truncated ? list.truncated : false - const cursor = list.cursor - const objs = list.objects - const urls = objs.map(it => { - return { - url: `${env.BASE_URL}/rest/${it.key}`, - key: it.key, - size: it.size - } - }) - return json(Ok({ - list: urls, - next: truncated, - cursor: cursor, - prefixes: list.delimitedPrefixes - })) + console.log(list) + // const truncated = list.truncated ? list.truncated : false + // const cursor = list.cursor + // const objs = list.objects + // const urls = objs.map(it => { + // return { + // url: `${env.BASE_URL}/rest/${it.key}`, + // key: it.key, + // size: it.size + // } + // }) + // return json(Ok({ + // list: urls, + // next: truncated, + // cursor: cursor, + // prefixes: list.delimitedPrefixes + // })) }) router.post('/listdir', auth, async ( env : Env) => { @@ -110,10 +110,10 @@ router.post('/listdir', auth, async ( env : Env) => { delimiter: '/', } const list = await env.PICX.list(options) - console.log(list) + const truncated = list.truncated ? list.truncated : false + const cursor = list.cursor const objs = list.objects - - return objs + return }) // batch upload file router.post('/upload', auth, async (req: Request, env : Env) => { From f21eb0cb35b67657f98f638e65b3aa5a762a6ff4 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:10:08 +0800 Subject: [PATCH 16/44] 666 --- functions/rest/routes/index.ts | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index ef5f7ba..1fc0240 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -83,22 +83,22 @@ router.post('/list', auth, async (req : Request, env : Env) => { } const list = await env.PICX.list(options) console.log(list) - // const truncated = list.truncated ? list.truncated : false - // const cursor = list.cursor - // const objs = list.objects - // const urls = objs.map(it => { - // return { - // url: `${env.BASE_URL}/rest/${it.key}`, - // key: it.key, - // size: it.size - // } - // }) - // return json(Ok({ - // list: urls, - // next: truncated, - // cursor: cursor, - // prefixes: list.delimitedPrefixes - // })) + const truncated = list.truncated ? list.truncated : false + const cursor = list.cursor + const objs = list.objects + const urls = objs.map(it => { + return { + url: `${env.BASE_URL}/rest/${it.key}`, + key: it.key, + size: it.size + } + }) + return json(Ok({ + list: urls, + next: truncated, + cursor: cursor, + prefixes: list.delimitedPrefixes + })) }) router.post('/listdir', auth, async ( env : Env) => { @@ -110,6 +110,7 @@ router.post('/listdir', auth, async ( env : Env) => { delimiter: '/', } const list = await env.PICX.list(options) + console.log(list) const truncated = list.truncated ? list.truncated : false const cursor = list.cursor const objs = list.objects From acdafc37781b1ce017875fd0aa8a71412a72060c Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:12:40 +0800 Subject: [PATCH 17/44] 99 --- functions/rest/routes/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 1fc0240..7167cc8 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -105,10 +105,11 @@ router.post('/listdir', auth, async ( env : Env) => { // console.log(include) const options = { - prefix: '/', limit: 100, delimiter: '/', } + console.log(89) + console.log(options) const list = await env.PICX.list(options) console.log(list) const truncated = list.truncated ? list.truncated : false From 390da708d3e31daa086b6b6cea450b2398db2f8c Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:15:37 +0800 Subject: [PATCH 18/44] 8 --- functions/rest/routes/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 7167cc8..3106295 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -112,9 +112,7 @@ router.post('/listdir', auth, async ( env : Env) => { console.log(options) const list = await env.PICX.list(options) console.log(list) - const truncated = list.truncated ? list.truncated : false - const cursor = list.cursor - const objs = list.objects + return }) // batch upload file From c7cab01e5a685ba5fb57556b1fd4794d08f31181 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:19:23 +0800 Subject: [PATCH 19/44] 88 --- functions/rest/routes/index.ts | 4 ++-- src/views/UploadImages.vue | 10 +++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 3106295..e5920c5 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -110,8 +110,8 @@ router.post('/listdir', auth, async ( env : Env) => { } console.log(89) console.log(options) - const list = await env.PICX.list(options) - console.log(list) + // const list = await env.PICX.list(options) + // console.log(list) return }) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 4d0d048..0a814c0 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -228,10 +228,18 @@ const appendConvertedImages = async (files: FileList | null | undefined) => { } const updateDir = () => { // return + console.log(147) requestListDir() .then(res=>{ console.log(res) - }) + }).catch(e=>{ + console.log("errr") + console.log(e) + } + + + + ) } const removeImage = (tmpSrc: string) => { convertedImages.value = convertedImages.value.filter((item) => item.tmpSrc !== tmpSrc) From c62908a06febff356c97d8da229c8737bd8d427a Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:37:52 +0800 Subject: [PATCH 20/44] 5 --- functions/rest/routes/index.ts | 60 ++++++++++++++++++++++++++++------ src/utils/request.ts | 2 +- src/views/UploadImages.vue | 18 +++------- 3 files changed, 56 insertions(+), 24 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index e5920c5..af8217d 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -100,21 +100,61 @@ router.post('/list', auth, async (req : Request, env : Env) => { prefixes: list.delimitedPrefixes })) }) +// list image +router.post('/listdir', auth, async (req : Request, env : Env) => { + var data; + + try{ + data= await req.json() as ImgReq -router.post('/listdir', auth, async ( env : Env) => { - + }catch(e){ + let url=new URL(req.url) + data={ + limit:url.searchParams.get("limit"), + delimiter:url.searchParams.get("delimiter"), + } + } + + if (!data.limit) { + data.limit = 10 + } + if (data.limit > 100) { + data.limit = 100 + } + if (!data.delimiter) { + data.delimiter = "/" + } + let include = undefined + if (data.delimiter != "/") { + include = data.delimiter + } // console.log(include) const options = { - limit: 100, - delimiter: '/', + limit: data.limit, + cursor: data.cursor, + delimiter: data.delimiter, + prefix: include } - console.log(89) - console.log(options) - // const list = await env.PICX.list(options) - // console.log(list) - - return + const list = await env.PICX.list(options) + console.log(list) + const truncated = list.truncated ? list.truncated : false + const cursor = list.cursor + const objs = list.objects + const urls = objs.map(it => { + return { + url: `${env.BASE_URL}/rest/${it.key}`, + key: it.key, + size: it.size + } + }) + return json(Ok({ + list: urls, + next: truncated, + cursor: cursor, + prefixes: list.delimitedPrefixes + })) }) + // batch upload file router.post('/upload', auth, async (req: Request, env : Env) => { const files = await req.formData() diff --git a/src/utils/request.ts b/src/utils/request.ts index 3a4393d..dea536c 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -50,7 +50,7 @@ request.interceptors.response.use( ) export const requestListImages = (data : ImgReq): Promise => request.post('/rest/list', data) -export const requestListDir = (): Promise => request.post('/rest/listdir') +export const requestListDir = (data : ImgReq): Promise => request.post('/rest/listdir', data) export const requestUploadImages = (data: FormData) : Promise => request.post('/rest/upload', data) export const createFolder = (data: Folder) => request.post('/rest/folder', data) export const checkToken = (data: AuthToken) => request.post('/rest/checkToken', data) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 0a814c0..546733f 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -227,19 +227,11 @@ const appendConvertedImages = async (files: FileList | null | undefined) => { loading.value = false } const updateDir = () => { - // return - console.log(147) - requestListDir() - .then(res=>{ - console.log(res) - }).catch(e=>{ - console.log("errr") - console.log(e) - } - - - - ) + requestListImages( { + limit: 100, + }).then((data) => { + console.log(data) + }).catch(() => {}) } const removeImage = (tmpSrc: string) => { convertedImages.value = convertedImages.value.filter((item) => item.tmpSrc !== tmpSrc) From 9f9aa4c41c4a372f3dc11b2ba6de40d0402be3a9 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:45:50 +0800 Subject: [PATCH 21/44] 4 --- src/views/UploadImages.vue | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 546733f..5b23f9e 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -137,7 +137,6 @@ const state1 = ref('') interface RestaurantItem { value: string - link: string } const createFilter = (queryString: string) => { return (restaurant: RestaurantItem) => { @@ -146,17 +145,7 @@ const createFilter = (queryString: string) => { ) } } -const loadAll = () => { - return [ - { value: 'vue', link: 'https://github.com/vuejs/vue' }, - { value: 'element', link: 'https://github.com/ElemeFE/element' }, - { value: 'cooking', link: 'https://github.com/ElemeFE/cooking' }, - { value: 'mint-ui', link: 'https://github.com/ElemeFE/mint-ui' }, - { value: 'vuex', link: 'https://github.com/vuejs/vuex' }, - { value: 'vue-router', link: 'https://github.com/vuejs/vue-router' }, - { value: 'babel', link: 'https://github.com/babel/babel' }, - ] -} + const restaurants = ref([]) const querySearch = (queryString: string, cb: any) => { @@ -231,6 +220,16 @@ const updateDir = () => { limit: 100, }).then((data) => { console.log(data) + let q=[] + let dirs=data.prefixes + for (let index = 0; index < dirs.length; index++) { + let element = dirs[index]; + q.append({ + value:element + }) + } + restaurants.value=q + console.log(q) }).catch(() => {}) } const removeImage = (tmpSrc: string) => { From f82f4afb79106a96c443702aebbe70a34287e260 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:47:18 +0800 Subject: [PATCH 22/44] q --- src/views/UploadImages.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 5b23f9e..9c1491d 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -168,7 +168,6 @@ const onPaste = (e: ClipboardEvent) => { onMounted(() => { document.onpaste = onPaste - restaurants.value = loadAll() updateDir() }) From 558dff5a770b7403313e45f3adf0edf747d92f9d Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:50:19 +0800 Subject: [PATCH 23/44] a --- src/views/UploadImages.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 9c1491d..0cb37f0 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -229,7 +229,7 @@ const updateDir = () => { } restaurants.value=q console.log(q) - }).catch(() => {}) + }).catch((e) => {console.log(e)}) } const removeImage = (tmpSrc: string) => { convertedImages.value = convertedImages.value.filter((item) => item.tmpSrc !== tmpSrc) From c7c8f46c1f8fa9a5f8c812f52eb72f00238c3221 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:54:47 +0800 Subject: [PATCH 24/44] 5 --- src/views/UploadImages.vue | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 0cb37f0..cab5721 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -219,16 +219,14 @@ const updateDir = () => { limit: 100, }).then((data) => { console.log(data) - let q=[] - let dirs=data.prefixes + let dirs= Array(data.prefixes) for (let index = 0; index < dirs.length; index++) { let element = dirs[index]; - q.append({ - value:element - }) + dirs[index]={value:element} } - restaurants.value=q + console.log(q) + restaurants.value=dirs }).catch((e) => {console.log(e)}) } const removeImage = (tmpSrc: string) => { From 6ea29df248093ffb5ceda5fbaac1a19241449e3c Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 14:56:22 +0800 Subject: [PATCH 25/44] qqqq --- src/views/UploadImages.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index cab5721..0e01fca 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -225,7 +225,6 @@ const updateDir = () => { dirs[index]={value:element} } - console.log(q) restaurants.value=dirs }).catch((e) => {console.log(e)}) } From e50d082709eaf9adde170b42d8a99ba15fe5d446 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 15:01:54 +0800 Subject: [PATCH 26/44] q --- src/views/UploadImages.vue | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 0e01fca..0c416b6 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -215,11 +215,27 @@ const appendConvertedImages = async (files: FileList | null | undefined) => { loading.value = false } const updateDir = () => { + +// let dirs= Array( [ +// "o/", +// "runoilbus/", +// "ss/" +// ]) + +// console.log(dirs) +// for (let index = 0; index < dirs.length; index++) { +// const element = dirs[index]; +// dirs[index]={value:element} +// console.log({value:element}) + +// } +// console.log(dirs) +// restaurants.value=dirs requestListImages( { limit: 100, }).then((data) => { console.log(data) - let dirs= Array(data.prefixes) + let dirs= (data.prefixes) for (let index = 0; index < dirs.length; index++) { let element = dirs[index]; dirs[index]={value:element} From 04c1bf7b99fcf872324b389a2bff239cddee69b7 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 15:07:19 +0800 Subject: [PATCH 27/44] a --- functions/rest/routes/index.ts | 4 +++- src/views/UploadImages.vue | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index af8217d..4839049 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -159,6 +159,8 @@ router.post('/listdir', auth, async (req : Request, env : Env) => { router.post('/upload', auth, async (req: Request, env : Env) => { const files = await req.formData() const images = files.getAll("files") + let q = files.get("prefix") + const prefix= q?q:"" const errs = [] const urls = Array() for (let item of images) { @@ -172,7 +174,7 @@ router.post('/upload', auth, async (req: Request, env : Env) => { const header = new Headers() header.set("content-type", fileType) header.set("content-length", `${item.size}`) - const object = await env.PICX.put("runoilbus/"+filename, item.stream(), { + const object = await env.PICX.put(prefix+filename, item.stream(), { httpMetadata: header, }) as R2Object if (object || object.key) { diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 0c416b6..6b165bc 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -55,7 +55,7 @@
() const loading = ref(false) const router = useRouter() -const state1 = ref('') +const prefix = ref('') interface RestaurantItem { value: string @@ -256,6 +256,7 @@ const uploadImages = () => { for (let item of convertedImages.value) { formData.append('files', item.file) } + formData.append("prefix",prefix) requestUploadImages(formData) .then((res) => { From 289ce5407109893797c0fb9ae4184940663a0d2d Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 15:11:29 +0800 Subject: [PATCH 28/44] qqq --- functions/rest/routes/index.ts | 1 + src/views/UploadImages.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 4839049..7d7aec5 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -161,6 +161,7 @@ router.post('/upload', auth, async (req: Request, env : Env) => { const images = files.getAll("files") let q = files.get("prefix") const prefix= q?q:"" + console.log(prefix) const errs = [] const urls = Array() for (let item of images) { diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 6b165bc..428c6b7 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -256,6 +256,7 @@ const uploadImages = () => { for (let item of convertedImages.value) { formData.append('files', item.file) } + console.log("ss"+prefix) formData.append("prefix",prefix) requestUploadImages(formData) From 1cd64b5e158179efb4a770003b05270959e36306 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 15:14:08 +0800 Subject: [PATCH 29/44] h --- src/views/UploadImages.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index 428c6b7..c8cc2fb 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -256,8 +256,8 @@ const uploadImages = () => { for (let item of convertedImages.value) { formData.append('files', item.file) } - console.log("ss"+prefix) - formData.append("prefix",prefix) + console.log("ss"+prefix.value) + formData.append("prefix",prefix.value) requestUploadImages(formData) .then((res) => { From 44b92b1cd009f59445a70f5e0ec06be04c37189c Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 15:18:16 +0800 Subject: [PATCH 30/44] 0 --- src/plugins/router.ts | 4 ++++ src/views/ManageImages.vue | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/plugins/router.ts b/src/plugins/router.ts index 104f19a..ffe8e7a 100644 --- a/src/plugins/router.ts +++ b/src/plugins/router.ts @@ -14,6 +14,10 @@ const router = createRouter({ { path: '/auth', component: () => import('../views/auth.vue') + // component: () => import('../views/UploadImages.vue') + // component: () => import('../views/ManageImages.vue') + + }, { path: '/:path(.*)', diff --git a/src/views/ManageImages.vue b/src/views/ManageImages.vue index 0b549a1..f40a109 100644 --- a/src/views/ManageImages.vue +++ b/src/views/ManageImages.vue @@ -9,7 +9,7 @@ 已上传 {{ uploadedImages.length }} 张图片,共 {{ formatBytes(imagesTotalSize) }}
-
+
Date: Thu, 4 Jul 2024 15:20:27 +0800 Subject: [PATCH 31/44] 2 --- src/views/ManageImages.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/ManageImages.vue b/src/views/ManageImages.vue index f40a109..f61d7b9 100644 --- a/src/views/ManageImages.vue +++ b/src/views/ManageImages.vue @@ -9,8 +9,8 @@ 已上传 {{ uploadedImages.length }} 张图片,共 {{ formatBytes(imagesTotalSize) }}
-
- +
+ Date: Thu, 4 Jul 2024 15:29:34 +0800 Subject: [PATCH 32/44] qq --- src/views/UploadImages.vue | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/views/UploadImages.vue b/src/views/UploadImages.vue index c8cc2fb..43d791f 100644 --- a/src/views/UploadImages.vue +++ b/src/views/UploadImages.vue @@ -256,8 +256,9 @@ const uploadImages = () => { for (let item of convertedImages.value) { formData.append('files', item.file) } - console.log("ss"+prefix.value) - formData.append("prefix",prefix.value) + let p=prefix.value+'/' + p=p.replace('//','/') + formData.append("prefix",p) requestUploadImages(formData) .then((res) => { From 7237526c1cb7123a54b535d3de657695fcc9ee4d Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 16:26:42 +0800 Subject: [PATCH 33/44] new f --- functions/rest/routes/index.ts | 20 +++++++++++++++++++- src/assets/prehold.png | Bin 0 -> 421 bytes src/views/ManageImages.vue | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 src/assets/prehold.png diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 7d7aec5..1aa7f0e 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -198,7 +198,25 @@ router.post("/folder", auth, async (req: Request, env: Env) => { if (!regx.test(data.name)) { return json(Fail("Folder name error")) } - await env.PICX.put(data.name + '/', null) + + + const imagePath = require('@/assets/prehold.png'); // 替换为你的图片路径 + const response = await fetch(imagePath); + const blob = await response.blob(); + // 将 Blob 转换为 File 对象 + + let file = new File([blob], 'your-image.jpg', { type: blob.type }); + + + const header = new Headers() + header.set("content-type", file.type) + header.set("content-length", `${file.size}`) + + console.log(file) + await env.PICX.put((data.name + '/').replace("//","/"), file.stream(), { + httpMetadata: header, + }) + return json(Ok("Success")) } catch (e) { return json(Fail("Create folder fail")) diff --git a/src/assets/prehold.png b/src/assets/prehold.png new file mode 100644 index 0000000000000000000000000000000000000000..39954c77b4a17f656f6f81d2824713304b8f0004 GIT binary patch literal 421 zcmV;W0b2fvP)Px#El^BUMK3BU|NsA)mXI=i{-Qufw1ZG+9cNb|yz#%5iIp z#Dmd|u4nSa7fF^8LDws()6JHi42F-H#5U>8A4~d>3<_X8$uj9$yV0N&pp<@)n`Csd zq-?LGo$qdU30jq;y%OjCB#DU(%Fe`-#N
- + Date: Thu, 4 Jul 2024 16:29:16 +0800 Subject: [PATCH 34/44] s --- functions/rest/routes/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 1aa7f0e..b5ba2d3 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -219,6 +219,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { return json(Ok("Success")) } catch (e) { + console.log(e) return json(Fail("Create folder fail")) } }) From 646b0fc55ff7a292024028734d0cf322038c7c3d Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 16:32:06 +0800 Subject: [PATCH 35/44] qq --- functions/rest/routes/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index b5ba2d3..14001f9 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -205,6 +205,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { const blob = await response.blob(); // 将 Blob 转换为 File 对象 + console.log(855) let file = new File([blob], 'your-image.jpg', { type: blob.type }); From 13ed70d8121f362d878eec7096162f67409027de Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 16:42:35 +0800 Subject: [PATCH 36/44] 4 --- functions/rest/routes/index.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 14001f9..df688a7 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -190,6 +190,16 @@ router.post('/upload', auth, async (req: Request, env : Env) => { return json(Build(urls, errs.toString())) }) +async function getPreHold(){ + const imagePath = new URL('@/assets/prehold.png', import.meta.url).href; + const response = await fetch(imagePath); + const blob = await response.blob(); + // 将 Blob 转换为 File 对象 + let file = new File([blob], 'your-image.jpg', { type: blob.type }); + console.log(file) + return file + } + // 创建目录 router.post("/folder", auth, async (req: Request, env: Env) => { try { @@ -200,13 +210,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { } - const imagePath = require('@/assets/prehold.png'); // 替换为你的图片路径 - const response = await fetch(imagePath); - const blob = await response.blob(); - // 将 Blob 转换为 File 对象 - - console.log(855) - let file = new File([blob], 'your-image.jpg', { type: blob.type }); + let file= await getPreHold() const header = new Headers() From 37efde9b795eb98eb6e396457ca612871f0bb07c Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 16:46:49 +0800 Subject: [PATCH 37/44] 5 --- functions/rest/routes/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index df688a7..bef5c87 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -225,6 +225,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { return json(Ok("Success")) } catch (e) { console.log(e) + return json(e) return json(Fail("Create folder fail")) } }) From a3ae3ad9526fa97963d9cd22d67abb3869a857e1 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 16:58:10 +0800 Subject: [PATCH 38/44] sss --- functions/rest/routes/index.ts | 16 +++---------- src/utils/types.ts | 3 ++- src/views/ManageImages.vue | 41 +++++++++++++++++++++++++--------- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index bef5c87..bec7b74 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -190,15 +190,7 @@ router.post('/upload', auth, async (req: Request, env : Env) => { return json(Build(urls, errs.toString())) }) -async function getPreHold(){ - const imagePath = new URL('@/assets/prehold.png', import.meta.url).href; - const response = await fetch(imagePath); - const blob = await response.blob(); - // 将 Blob 转换为 File 对象 - let file = new File([blob], 'your-image.jpg', { type: blob.type }); - console.log(file) - return file - } + // 创建目录 router.post("/folder", auth, async (req: Request, env: Env) => { @@ -209,8 +201,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { return json(Fail("Folder name error")) } - - let file= await getPreHold() + let file=data.prehold; const header = new Headers() @@ -218,14 +209,13 @@ router.post("/folder", auth, async (req: Request, env: Env) => { header.set("content-length", `${file.size}`) console.log(file) - await env.PICX.put((data.name + '/').replace("//","/"), file.stream(), { + await env.PICX.put((data.name + '/').replace("//","/")+file.name, file.stream(), { httpMetadata: header, }) return json(Ok("Success")) } catch (e) { console.log(e) - return json(e) return json(Fail("Create folder fail")) } }) diff --git a/src/utils/types.ts b/src/utils/types.ts index 6deaa77..5e46a6e 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -40,5 +40,6 @@ export interface ImgReq { limit: Number } export interface Folder { - name: string + name: string, + prehold:File } diff --git a/src/views/ManageImages.vue b/src/views/ManageImages.vue index 2baa184..978010b 100644 --- a/src/views/ManageImages.vue +++ b/src/views/ManageImages.vue @@ -68,6 +68,7 @@ const changeFolder = (path : string) => { delimiter.value = path listImages() } + const addFolder = () => { ElMessageBox.prompt('请输入目录名称,仅支持英文名称', '新增目录', { confirmButtonText: '创建', @@ -76,17 +77,35 @@ const addFolder = () => { inputErrorMessage: '无效的目录名称', }).then(({ value }) => { loading.value = true - createFolder( { - name: value - }).then((res) => { - console.log(res) - ElMessage.success('文件夹创建成功') - listImages() - }).catch(() => { - ElMessage.error('文件夹创建失败') - }).finally(() => { - loading.value = false - }) + + const imagePath = new URL('@/assets/prehold.png', import.meta.url).href; + + const xhr = new XMLHttpRequest(); + xhr.open('GET', imagePath, true); + xhr.responseType = 'blob'; + + xhr.onload = () => { + if (xhr.status === 200) { + const blob = xhr.response; + let file = new File([blob], 'your-image.jpg', { type: blob.type }); + + createFolder( { + name: value, + prehold:file + }).then((res) => { + console.log(res) + ElMessage.success('文件夹创建成功') + listImages() + }).catch(() => { + ElMessage.error('文件夹创建失败') + }).finally(() => { + loading.value = false + }) + } + }; + + + }).catch(() => {}) } const listImages = () => { From 21f8f3cc976e32a5cc1402cc4e4a3f6f3ef53596 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 17:09:23 +0800 Subject: [PATCH 39/44] f --- src/views/ManageImages.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/views/ManageImages.vue b/src/views/ManageImages.vue index 978010b..8ae69b4 100644 --- a/src/views/ManageImages.vue +++ b/src/views/ManageImages.vue @@ -78,7 +78,8 @@ const addFolder = () => { }).then(({ value }) => { loading.value = true - const imagePath = new URL('@/assets/prehold.png', import.meta.url).href; + const imagePath = new URL('../assets/prehold.png', import.meta.url).href; + const xhr = new XMLHttpRequest(); xhr.open('GET', imagePath, true); @@ -89,6 +90,7 @@ const addFolder = () => { const blob = xhr.response; let file = new File([blob], 'your-image.jpg', { type: blob.type }); + console.log(file) createFolder( { name: value, prehold:file @@ -103,7 +105,7 @@ const addFolder = () => { }) } }; - + xhr.send(); }).catch(() => {}) From 2a909637107c3eb79f1d5d412ee2aef31f0570b1 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 17:13:27 +0800 Subject: [PATCH 40/44] a --- functions/rest/type.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/rest/type.ts b/functions/rest/type.ts index 2428dc8..990b18b 100644 --- a/functions/rest/type.ts +++ b/functions/rest/type.ts @@ -26,7 +26,8 @@ export interface ImgReq { // 文件夹名称 export interface Folder { - name: string + name: string, + prehold:File } export function NotAuth() : Result { From 2326f504059947918b8ac55ad0801d4a32ff9c7e Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 17:16:27 +0800 Subject: [PATCH 41/44] sfsa --- functions/rest/routes/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index bec7b74..616f014 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -209,6 +209,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { header.set("content-length", `${file.size}`) console.log(file) + console.log("ragbshfnj") await env.PICX.put((data.name + '/').replace("//","/")+file.name, file.stream(), { httpMetadata: header, }) From e91c996283aa810dd0164fd23b6792b8e3a552ea Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 17:18:53 +0800 Subject: [PATCH 42/44] qwrwq --- functions/rest/routes/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 616f014..9d08454 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -209,6 +209,8 @@ router.post("/folder", auth, async (req: Request, env: Env) => { header.set("content-length", `${file.size}`) console.log(file) + return json(Fail("ragbshfnj")) + console.log("ragbshfnj") await env.PICX.put((data.name + '/').replace("//","/")+file.name, file.stream(), { httpMetadata: header, From d71f1727178e8e7f6b9ffc106dd1e3aec29b5045 Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 17:27:06 +0800 Subject: [PATCH 43/44] ssfsa --- functions/rest/routes/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/functions/rest/routes/index.ts b/functions/rest/routes/index.ts index 9d08454..7aa752b 100644 --- a/functions/rest/routes/index.ts +++ b/functions/rest/routes/index.ts @@ -209,7 +209,7 @@ router.post("/folder", auth, async (req: Request, env: Env) => { header.set("content-length", `${file.size}`) console.log(file) - return json(Fail("ragbshfnj")) + return json(file) console.log("ragbshfnj") await env.PICX.put((data.name + '/').replace("//","/")+file.name, file.stream(), { From 74c28b4dbc8300e52160c3ade1b26c7367f760df Mon Sep 17 00:00:00 2001 From: Nooniebao Date: Thu, 4 Jul 2024 17:31:36 +0800 Subject: [PATCH 44/44] s --- src/views/ManageImages.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/ManageImages.vue b/src/views/ManageImages.vue index 8ae69b4..77d3770 100644 --- a/src/views/ManageImages.vue +++ b/src/views/ManageImages.vue @@ -10,7 +10,7 @@
- + { xhr.onload = () => { if (xhr.status === 200) { const blob = xhr.response; - let file = new File([blob], 'your-image.jpg', { type: blob.type }); + let file = new File([blob], 'yourimage.jpg', { type: blob.type }); console.log(file) createFolder( {