training_data/apps/web/src/app/main/home/page.tsx

82 lines
2.2 KiB
TypeScript
Raw Normal View History

2025-01-06 08:45:23 +08:00
import React, { useState } from 'react';
import { useUpload } from '@nice/client'; // Assuming the previous hook is in this file
2025-01-03 09:24:46 +08:00
2025-01-06 08:45:23 +08:00
const FileUploadComponent: React.FC = () => {
const [selectedFiles, setSelectedFiles] = useState<File[]>([]);
2025-01-03 09:24:46 +08:00
2025-01-06 08:45:23 +08:00
const {
upload,
pauseUpload,
resumeUpload,
progress,
errors
} = useUpload({
// Optional configuration
baseUrl: "http://localhost:3000/upload",
onProgress: (progressInfo) => {
console.log('Upload progress:', progressInfo);
},
onError: (error) => {
console.error('Upload error:', error);
}
});
2025-01-03 09:24:46 +08:00
2025-01-06 08:45:23 +08:00
const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {
if (event.target.files) {
setSelectedFiles(Array.from(event.target.files));
}
};
2025-01-03 09:24:46 +08:00
2025-01-06 08:45:23 +08:00
const handleUpload = async () => {
try {
await upload(selectedFiles);
alert('Upload completed successfully!');
} catch (error) {
console.error('Upload failed:', error);
}
};
const renderProgressBar = (fileName: string) => {
const fileProgress = progress[fileName];
if (!fileProgress) return null;
return (
<div>
<p>{fileName}</p>
<progress
value={fileProgress.percentage}
max="100"
/>
<span>{fileProgress.percentage.toFixed(2)}%</span>
{errors[fileName] && (
<p style={{ color: 'red' }}>
Error: {errors[fileName].message}
</p>
)}
</div>
);
};
2025-01-03 09:24:46 +08:00
return (
2025-01-06 08:45:23 +08:00
<div>
2025-01-03 09:24:46 +08:00
<input
type="file"
2025-01-06 08:45:23 +08:00
multiple
2025-01-03 09:24:46 +08:00
onChange={handleFileSelect}
/>
2025-01-06 08:45:23 +08:00
<button
onClick={handleUpload}
disabled={selectedFiles.length === 0}
>
Upload Files
</button>
2025-01-03 09:24:46 +08:00
2025-01-06 08:45:23 +08:00
<div>
<h3>Upload Progress</h3>
{selectedFiles.map(file => renderProgressBar(file.name))}
</div>
2025-01-03 09:24:46 +08:00
</div>
);
};
2025-01-06 08:45:23 +08:00
export default FileUploadComponent;