mirror of
https://github.com/CompassConnections/Compass.git
synced 2026-05-06 06:04:54 -04:00
Fix file upload
This commit is contained in:
@@ -21,60 +21,49 @@ export async function POST(request: Request) {
|
||||
|
||||
const formData = await request.formData();
|
||||
console.log('formData', formData);
|
||||
let files = formData.get('files') as File | null | File[];
|
||||
const file = formData.get('file') as File | null;
|
||||
|
||||
if (files?.name) {
|
||||
files = [files];
|
||||
if (!file) return NextResponse.json({error: 'No file provided'}, {status: 400});
|
||||
|
||||
// Validate file type
|
||||
if (!file.type.startsWith('image/')) {
|
||||
return NextResponse.json({error: 'Only image files are allowed'}, {status: 400});
|
||||
}
|
||||
|
||||
const results = await Promise.all(
|
||||
files.map(async (file) => {
|
||||
if (!file) {
|
||||
return NextResponse.json({error: 'No file provided'}, {status: 400});
|
||||
}
|
||||
// Validate file size (5MB max)
|
||||
if (file.size > 5 * 1024 * 1024) {
|
||||
return NextResponse.json({error: 'File size must be less than 5MB'}, {status: 400});
|
||||
}
|
||||
|
||||
// Validate file type
|
||||
if (!file.type.startsWith('image/')) {
|
||||
return NextResponse.json({error: 'Only image files are allowed'}, {status: 400});
|
||||
}
|
||||
const fileExtension = file.name.split('.').pop();
|
||||
const fileName = `${uuidv4()}.${fileExtension}`;
|
||||
const fileBuffer = await file.arrayBuffer();
|
||||
const key = `profile-pictures/${fileName}`;
|
||||
|
||||
// Validate file size (5MB max)
|
||||
if (file.size > 5 * 1024 * 1024) {
|
||||
return NextResponse.json({error: 'File size must be less than 5MB'}, {status: 400});
|
||||
}
|
||||
const uploadParams = {
|
||||
Bucket: process.env.AWS_S3_BUCKET_NAME!,
|
||||
Key: key,
|
||||
Body: Buffer.from(fileBuffer),
|
||||
ContentType: file.type,
|
||||
};
|
||||
|
||||
const fileExtension = file.name.split('.').pop();
|
||||
const fileName = `${uuidv4()}.${fileExtension}`;
|
||||
const fileBuffer = await file.arrayBuffer();
|
||||
const key = `profile-pictures/${fileName}`;
|
||||
const response = await s3Client.send(new PutObjectCommand(uploadParams));
|
||||
console.log(`Response: ${response}`);
|
||||
|
||||
const uploadParams = {
|
||||
Bucket: process.env.AWS_S3_BUCKET_NAME!,
|
||||
Key: key,
|
||||
Body: Buffer.from(fileBuffer),
|
||||
ContentType: file.type,
|
||||
};
|
||||
|
||||
const response = await s3Client.send(new PutObjectCommand(uploadParams));
|
||||
console.log(`Response: ${response}`);
|
||||
|
||||
// get signed url
|
||||
const url = await getSignedUrl(
|
||||
s3Client,
|
||||
new GetObjectCommand({
|
||||
Bucket: process.env.AWS_S3_BUCKET_NAME!,
|
||||
Key: key,
|
||||
}),
|
||||
{expiresIn: 300} // 5 minutes
|
||||
);
|
||||
|
||||
console.log(`Signed URL: ${url}`);
|
||||
// const fileUrl = `${process.env.AWS_S3_BUCKET_NAME}/profile-pictures/${fileName}`;
|
||||
return {url: url, key: key};
|
||||
})
|
||||
// get signed url
|
||||
const url = await getSignedUrl(
|
||||
s3Client,
|
||||
new GetObjectCommand({
|
||||
Bucket: process.env.AWS_S3_BUCKET_NAME!,
|
||||
Key: key,
|
||||
}),
|
||||
{expiresIn: 300} // 5 minutes
|
||||
);
|
||||
|
||||
return NextResponse.json(results);
|
||||
console.log(`Signed URL: ${url}`);
|
||||
// const fileUrl = `${process.env.AWS_S3_BUCKET_NAME}/profile-pictures/${fileName}`;
|
||||
|
||||
return NextResponse.json({url: url, key: key});
|
||||
} catch (error) {
|
||||
console.error('Upload error:', error);
|
||||
return NextResponse.json(
|
||||
|
||||
@@ -147,7 +147,7 @@ function RegisterComponent() {
|
||||
}
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append('files', file);
|
||||
formData.append('file', file);
|
||||
|
||||
try {
|
||||
setIsUploading(true);
|
||||
@@ -164,9 +164,7 @@ function RegisterComponent() {
|
||||
return;
|
||||
}
|
||||
|
||||
const results = await response.json();
|
||||
|
||||
const {url, key} = results[0]
|
||||
const {url, key} = await response.json();
|
||||
if (headShot) {
|
||||
setImage(url);
|
||||
setKey(key);
|
||||
|
||||
Reference in New Issue
Block a user