next-img-base64ify
Version:
A lightweight and efficient package for Base64 encoding and decoding images and files in Next.js and React applications.
114 lines (91 loc) • 2.78 kB
Markdown
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.

```bash
npm i next-img-base64ify
yarn add next-img-base64ify
pnpm i next-img-base64ify
```
```js
'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;
```
```js
const { data, isLoading, isError, isValidSize } = await _64ify(myFile, {
allowedSizes: {
minSize: 1024, // file size in KB
maxSize: 1024 * 5, // file size in MB
},
...
});
```
```js
const { data, isLoading, isError, isValidSize } = await _64ify(myFile, {
allowedTypes: ["image/jpeg", "image/png", "image/webp"],
...
});
```
```js
<input type="file" accept="image/jpeg, image/png, "image/webp", ..."/>
```
```js
// 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",
}
```