import React, { useState } from 'react'; import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'; import './App.css'; function App() { const [accessKeyId, setAccessKeyId] = useState(''); const [secretAccessKey, setSecretAccessKey] = useState(''); const [endpointUrl, setEndpointUrl] = useState(''); const [bucketName, setBucketName] = useState(''); const [fileUrls, setFileUrls] = useState(''); const [fileNames, setFileNames] = useState(''); const [uploadProgress, setUploadProgress] = useState({}); const [uploadResult, setUploadResult] = useState({}); const handleUpload = async () => { // Reset upload progress and result setUploadProgress({}); setUploadResult({}); // Create an S3 client const s3Client = new S3Client({ credentials: { accessKeyId, secretAccessKey, }, endpoint: endpointUrl, }); // Split file URLs and names by comma const urls = fileUrls.split(',').map((url) => url.trim()); const names = fileNames.split(',').map((name) => name.trim()); // Upload each file to S3 for (let i = 0; i < urls.length; i++) { const url = urls[i]; const name = names[i]; try { // Fetch the file from the URL const response = await fetch(url); const fileStream = response.body; // Set up parameters for the S3 upload const uploadParams = { Bucket: bucketName, Key: name, Body: fileStream, }; // Upload the file to S3 await s3Client.send(new PutObjectCommand(uploadParams)); // Update upload progress setUploadProgress((prevProgress) => ({ ...prevProgress, [url]: 100, })); // Update upload result setUploadResult((prevResult) => ({ ...prevResult, [url]: 'Uploaded successfully', })); } catch (err) { // Update upload result with error message setUploadResult((prevResult) => ({ ...prevResult, [url]: `Error: ${err.message}`, })); } } }; return (

Upload Files to S3

setAccessKeyId(e.target.value)} />
setSecretAccessKey(e.target.value)} />
setEndpointUrl(e.target.value)} />
setBucketName(e.target.value)} />