create branch dev and commit code
This commit is contained in:
parent
3b70cc9fe8
commit
ea68fa5cc4
44 changed files with 12421 additions and 214 deletions
55
src/routes/api/adv-upload/+server.ts
Normal file
55
src/routes/api/adv-upload/+server.ts
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
import { json, error } from '@sveltejs/kit';
|
||||
import type { RequestHandler } from './$types';
|
||||
import { env } from '$env/dynamic/public';
|
||||
|
||||
// Adv videos are served by the same taobin_image service as menu images.
|
||||
const ADV_API_BASE = env.PUBLIC_POST_IMAGE;
|
||||
|
||||
export const POST: RequestHandler = async ({ request }) => {
|
||||
try {
|
||||
const formData = await request.formData();
|
||||
|
||||
const country = formData.get('country') as string;
|
||||
const uid = formData.get('uid') as string;
|
||||
const displayName = formData.get('displayName') as string;
|
||||
const email = formData.get('email') as string;
|
||||
const file = formData.get('file') as File;
|
||||
// 'false' when the manifest is generated on a machine (method 2).
|
||||
const regenerate = (formData.get('regenerate') as string) ?? 'true';
|
||||
|
||||
if (!country || !uid || !displayName || !email || !file) {
|
||||
throw error(400, 'Missing required fields');
|
||||
}
|
||||
|
||||
const endpoint =
|
||||
`${ADV_API_BASE}/adv/upload/${encodeURIComponent(country)}/${encodeURIComponent(uid)}/${encodeURIComponent(displayName)}/${encodeURIComponent(email)}` +
|
||||
`?regenerate=${encodeURIComponent(regenerate)}`;
|
||||
|
||||
console.log('[Adv Upload Proxy] Endpoint:', endpoint, 'file:', file.name);
|
||||
|
||||
// Upstream expects the multipart field name `files`.
|
||||
const uploadFormData = new FormData();
|
||||
uploadFormData.append('files', file);
|
||||
|
||||
const response = await fetch(endpoint, {
|
||||
method: 'POST',
|
||||
body: uploadFormData
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json().catch(() => ({ detail: response.statusText }));
|
||||
throw error(response.status, errorData.detail || 'Upload failed');
|
||||
}
|
||||
|
||||
const result = await response.json();
|
||||
return json(result);
|
||||
} catch (err) {
|
||||
console.error('[Adv Upload Proxy] Error:', err);
|
||||
|
||||
if (err && typeof err === 'object' && 'status' in err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
throw error(500, err instanceof Error ? err.message : 'Internal server error');
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue