Learning Topics
Choose Topics Accordingly
Build a File Uploaded
Inverview Question : Create a File Uploader using Sveltekit
Let's create a file uploader using Sveltekit. we are going to use Cloudinary for uploading files.
Form submission at Server Side +page.server.ts
File
import { error } from '@sveltejs/kit';
import { v2 as cloudinary } from 'cloudinary';
import { CLOUDINARY_API_SECRET, CLOUDINARY_API_KEY } from '$env/static/private';
import { PUBLIC_CLOUDINARY_CLOUD_NAME } from '$env/static/public';
cloudinary.config({
cloud_name: PUBLIC_CLOUDINARY_CLOUD_NAME,
api_key: CLOUDINARY_API_KEY,
api_secret: CLOUDINARY_API_SECRET,
secure: true
});
/** @type {import('./$types').Actions} */
export const actions = {
fileUpload: async ({ request }) => {
try {
/*
* @type {FormData}
*/
const formData = await request.formData();
/**
* @type {FormDataEntryValue | null}
*/
let fileName = formData.get('fileName');
const fileData = /** @type {File} */ (formData.get('file'));
const arrayBuffer = await fileData.arrayBuffer();
const buffer = new Uint8Array(arrayBuffer);
const uploadStream = await new Promise((resolve, reject) => {
// Uploading to cloudinary
cloudinary.uploader
.upload_stream({}, function (error, result) {
if (error) {
return reject(error);
}
return resolve(result);
})
.end(buffer);
});
console.log(uploadStream); // Details of the uploaded file
return { success: true, image: uploadStream.url };
} catch (er) {
console.error(er);
return error(er);
}
}
};
import { error } from '@sveltejs/kit';
import { v2 as cloudinary } from 'cloudinary';
import { CLOUDINARY_API_SECRET, CLOUDINARY_API_KEY } from '$env/static/private';
import { PUBLIC_CLOUDINARY_CLOUD_NAME } from '$env/static/public';
cloudinary.config({
cloud_name: PUBLIC_CLOUDINARY_CLOUD_NAME,
api_key: CLOUDINARY_API_KEY,
api_secret: CLOUDINARY_API_SECRET,
secure: true
});
/** @type {import('./$types').Actions} */
export const actions = {
fileUpload: async ({ request }) => {
try {
/*
* @type {FormData}
*/
const formData = await request.formData();
/**
* @type {FormDataEntryValue | null}
*/
let fileName = formData.get('fileName');
const fileData = /** @type {File} */ (formData.get('file'));
const arrayBuffer = await fileData.arrayBuffer();
const buffer = new Uint8Array(arrayBuffer);
const uploadStream = await new Promise((resolve, reject) => {
// Uploading to cloudinary
cloudinary.uploader
.upload_stream({}, function (error, result) {
if (error) {
return reject(error);
}
return resolve(result);
})
.end(buffer);
});
console.log(uploadStream); // Details of the uploaded file
return { success: true, image: uploadStream.url };
} catch (er) {
console.error(er);
return error(er);
}
}
};