diff --git a/cloudflare-page/OneAPI-imgbed-MIX.html b/cloudflare-page/OneAPI-imgbed-MIX.html
index 14d8f97..3680ad4 100644
--- a/cloudflare-page/OneAPI-imgbed-MIX.html
+++ b/cloudflare-page/OneAPI-imgbed-MIX.html
@@ -73,6 +73,7 @@
+
diff --git a/cloudflare-worker-js-api/API_IMG_jdkf.js b/cloudflare-worker-js-api/API_IMG_jdkf.js
new file mode 100644
index 0000000..99003e7
--- /dev/null
+++ b/cloudflare-worker-js-api/API_IMG_jdkf.js
@@ -0,0 +1,78 @@
+async function handlejdkfRequest(request) {
+ console.log('Request received for jdkf upload:', request.url);
+
+ if (request.method !== 'POST') {
+ return new Response('Method Not Allowed', { status: 405 });
+ }
+
+ try {
+ // 解析请求中的表单数据
+ const formData = await request.formData();
+ const file = formData.get('image'); // 前端上传的字段名为 'image'
+
+ if (!file) {
+ return new Response('No file uploaded', { status: 400 });
+ }
+
+ // 创建新的 FormData,用于发送到目标接口
+ const newFormData = new FormData();
+ newFormData.append('files', file, file.name); // 目标接口要求字段名为 'files'
+
+ // 设置目标接口所需的头部信息
+ const targetHeaders = {
+ 'Accept': 'application/json',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',
+ 'Cache-Control': 'no-cache',
+ 'Pragma': 'no-cache',
+ 'Priority': 'u=1, i',
+ 'Sec-CH-UA': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
+ 'Sec-CH-UA-Mobile': '?0',
+ 'Sec-CH-UA-Platform': '"Windows"',
+ 'Sec-Fetch-Dest': 'empty',
+ 'Sec-Fetch-Mode': 'cors',
+ 'Sec-Fetch-Site': 'none',
+ 'X-Requested-With': 'XMLHttpRequest'
+ };
+
+ // 目标上传接口的 URL
+ const targetUrl = 'https://kefu-jtalk.jd.com/jtalk/hfive/resource/image/upload';
+
+ // 发送请求到目标接口
+ const response = await fetch(targetUrl, {
+ method: 'POST',
+ headers: targetHeaders,
+ body: newFormData
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ console.error(`Upload failed: Status ${response.status}, Body: ${errorText}`);
+ return new Response(`Upload failed: ${errorText}`, { status: response.status });
+ }
+
+ // 解析目标接口的响应
+ const responseData = await response.json();
+ console.log('Response from jdkf API:', responseData);
+
+ // 从响应中提取图片 URL
+ const uploadUrl = responseData?.data?.[0]?.url;
+
+ if (uploadUrl) {
+ // 成功,返回图片 URL
+ return new Response(uploadUrl, {
+ status: 200,
+ headers: {
+ 'Content-Type': 'text/plain',
+ 'Access-Control-Allow-Origin': '*' // 根据需要调整 CORS 策略
+ }
+ });
+ } else {
+ console.error('URL not found in response:', responseData);
+ return new Response('Upload succeeded but no URL returned', { status: 500 });
+ }
+ } catch (error) {
+ console.error('Error in handleJdkfRequest:', error);
+ return new Response('Internal Server Error', { status: 500 });
+ }
+ }
+
\ No newline at end of file
diff --git a/cloudflare-worker-js-api/worker.js b/cloudflare-worker-js-api/worker.js
index 03428da..a721cfe 100644
--- a/cloudflare-worker-js-api/worker.js
+++ b/cloudflare-worker-js-api/worker.js
@@ -65,6 +65,9 @@ async function handleRequest(request) {
case '/upload/aliex':
response = await handleAliExpressRequest(request);
break;
+ case '/upload/jdkf':
+ response = await handlejdkfRequest(request);
+ break;
default:
response = new Response('Not Found', { status: 404 });
break;
@@ -719,4 +722,82 @@ async function handleRequest(request) {
});
}
}
+
+ async function handlejdkfRequest(request) {
+ console.log('Request received for jdkf upload:', request.url);
+
+ if (request.method !== 'POST') {
+ return new Response('Method Not Allowed', { status: 405 });
+ }
+
+ try {
+ // 解析请求中的表单数据
+ const formData = await request.formData();
+ const file = formData.get('image'); // 前端上传的字段名为 'image'
+
+ if (!file) {
+ return new Response('No file uploaded', { status: 400 });
+ }
+
+ // 创建新的 FormData,用于发送到目标接口
+ const newFormData = new FormData();
+ newFormData.append('files', file, file.name); // 目标接口要求字段名为 'files'
+
+ // 设置目标接口所需的头部信息
+ const targetHeaders = {
+ 'Accept': 'application/json',
+ 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7',
+ 'Cache-Control': 'no-cache',
+ 'Pragma': 'no-cache',
+ 'Priority': 'u=1, i',
+ 'Sec-CH-UA': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
+ 'Sec-CH-UA-Mobile': '?0',
+ 'Sec-CH-UA-Platform': '"Windows"',
+ 'Sec-Fetch-Dest': 'empty',
+ 'Sec-Fetch-Mode': 'cors',
+ 'Sec-Fetch-Site': 'none',
+ 'X-Requested-With': 'XMLHttpRequest'
+ };
+
+ // 目标上传接口的 URL
+ const targetUrl = 'https://kefu-jtalk.jd.com/jtalk/hfive/resource/image/upload';
+
+ // 发送请求到目标接口
+ const response = await fetch(targetUrl, {
+ method: 'POST',
+ headers: targetHeaders,
+ body: newFormData
+ });
+
+ if (!response.ok) {
+ const errorText = await response.text();
+ console.error(`Upload failed: Status ${response.status}, Body: ${errorText}`);
+ return new Response(`Upload failed: ${errorText}`, { status: response.status });
+ }
+
+ // 解析目标接口的响应
+ const responseData = await response.json();
+ console.log('Response from jdkf API:', responseData);
+
+ // 从响应中提取图片 URL
+ const uploadUrl = responseData?.data?.[0]?.url;
+
+ if (uploadUrl) {
+ // 成功,返回图片 URL
+ return new Response(uploadUrl, {
+ status: 200,
+ headers: {
+ 'Content-Type': 'text/plain',
+ 'Access-Control-Allow-Origin': '*' // 根据需要调整 CORS 策略
+ }
+ });
+ } else {
+ console.error('URL not found in response:', responseData);
+ return new Response('Upload succeeded but no URL returned', { status: 500 });
+ }
+ } catch (error) {
+ console.error('Error in handleJdkfRequest:', error);
+ return new Response('Internal Server Error', { status: 500 });
+ }
+ }
\ No newline at end of file
diff --git a/python-uploader/test-jdkf.py b/python-uploader/test-jdkf.py
new file mode 100644
index 0000000..01ece4f
--- /dev/null
+++ b/python-uploader/test-jdkf.py
@@ -0,0 +1,55 @@
+import requests
+
+# 上传的目标URL
+url = "https://kefu-jtalk.jd.com/jtalk/hfive/resource/image/upload"
+
+# 请求头设置
+headers = {
+ "accept": "application/json",
+ "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7",
+ "cache-control": "no-cache",
+ "pragma": "no-cache",
+ "priority": "u=1, i",
+ "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
+ "sec-ch-ua-mobile": "?0",
+ "sec-ch-ua-platform": "\"Windows\"",
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "none",
+ "x-requested-with": "XMLHttpRequest"
+}
+
+# 本地文件路径和上传时的文件名
+file_path = r"F:\Download\20240416-164224.jpg"
+upload_filename = "test.jpg"
+
+# 打开文件并准备上传
+with open(file_path, 'rb') as file:
+ files = {
+ "files": (upload_filename, file, "image/jpeg")
+ }
+
+ try:
+ # 发送POST请求
+ response = requests.post(url, headers=headers, files=files)
+
+ # 检查响应状态码
+ if response.status_code == 200:
+ # 解析并打印JSON响应
+ response_data = response.json()
+ print("上传成功!响应内容如下:")
+ print(response_data)
+
+ # 提取URL
+ upload_url = response_data.get('data', [{}])[0].get('url', None)
+ if upload_url:
+ print("提取的上传URL为:")
+ print(upload_url)
+ else:
+ print("未找到有效的上传URL。")
+ else:
+ print(f"上传失败,状态码:{response.status_code}")
+ print("响应内容:")
+ print(response.text)
+ except requests.exceptions.RequestException as e:
+ print("上传过程中发生错误:", e)