"use client"; import { useState } from "react"; import AudioPlayer from "@/components/AudioPlayer"; export default function S3TestPage() { const [testUrl, setTestUrl] = useState(""); const [result, setResult] = useState | null>(null); const [loading, setLoading] = useState(false); const [showAudioPlayer, setShowAudioPlayer] = useState(false); const testS3Access = async () => { if (!testUrl) return; setLoading(true); try { const response = await fetch(testUrl, { method: "HEAD", }); setResult({ status: response.status, statusText: response.statusText, headers: Object.fromEntries(response.headers.entries()), accessible: response.ok, }); if (response.ok) { setShowAudioPlayer(true); } } catch (error) { setResult({ error: error instanceof Error ? error.message : "未知错误", accessible: false, }); setShowAudioPlayer(false); } finally { setLoading(false); } }; const testAudioPlayback = async () => { if (!testUrl) return; setLoading(true); try { const response = await fetch(testUrl); const blob = await response.blob(); setResult({ ...result, audioTest: { blobSize: blob.size, blobType: blob.type, accessible: true, }, }); } catch (error) { setResult({ ...result, audioTest: { error: error instanceof Error ? error.message : "未知错误", accessible: false, }, }); } finally { setLoading(false); } }; return (

S3 文件访问测试

setTestUrl(e.target.value)} placeholder="https://your-bucket.s3.region.amazonaws.com/path/to/file.webm" className="w-full p-3 border border-gray-300 rounded-lg dark:bg-gray-700 dark:border-gray-600" />
{result?.accessible && ( )}
{result && (

测试结果:

              {JSON.stringify(result, null, 2)}
            
)} {showAudioPlayer && testUrl && (

音频播放器测试:

)}
); }