The "next-img-base64ify" package simplifies file handling in Next.js/React.js applications by converting selected files to base64 strings. It provides easy-to-use functions for validating file types and sizes, ensuring smooth and efficient file uploads. It is ideal for image files and integrates seamlessly with React components for streamlined file management.
npm i next-img-base64ify
# or
yarn add next-img-base64ify
# or
pnpm i next-img-base64ify
'use client';
import React, { useState } from 'react';
import { _64ify } from 'next-img-base64ify';
const MyFileUpload = () => {
const [myFile, setMyFile] = useState<File | null>(null);
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
if (myFile) {
const { data, isLoading, isError, isValidSize } = await _64ify(myFile, {
allowedSizes: {
minSize: 10,
maxSize: 2048,
},
allowedTypes: ['image/jpeg', 'image/png'],
});
console.log({ data, isLoading, isError, isValidSize });
}
};
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
if (e.target.files) {
setMyFile(e.target.files[0]);
}
};
return (
<form onSubmit={handleSubmit}>
<input
type='file'
accept='image/jpeg, image/png'
onChange={handleChange}
/>
<button type='submit'>Upload File</button>
</form>
);
};
export default MyFileUpload;
const { data, isLoading, isError, isValidSize } = await _64ify(myFile, {
allowedSizes: {
minSize: 1024, // file size in KB
maxSize: 1024 * 5, // file size in MB
},
...
});
const { data, isLoading, isError, isValidSize } = await _64ify(myFile, {
allowedTypes: ["image/jpeg", "image/png", "image/webp"],
...
});
<input type="file" accept="image/jpeg, image/png, "image/webp", ..."/>
// Copy and paste what you need 😊
{
"image/jpeg",
"image/png",
"image/svg+xml",
"image/gif",
"image/webp",
"image/bmp",
"image/tiff",
"image/x-icon",
"image/vnd.microsoft.icon",
"image/vnd.wap.wbmp",
"image/heic",
"image/heif",
"image/jxr",
}